forked from ibireme/YYImage
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
100 changed files
with
11,121 additions
and
2 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
7 changes: 7 additions & 0 deletions
7
Demo/YYImageDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
// | ||
// AppDelegate.h | ||
// YYImageDemo | ||
// | ||
// Created by ibireme on 15/10/16. | ||
// Copyright © 2015年 ibireme. All rights reserved. | ||
// | ||
|
||
#import <UIKit/UIKit.h> | ||
|
||
@interface AppDelegate : UIResponder <UIApplicationDelegate> | ||
|
||
@property (strong, nonatomic) UIWindow *window; | ||
|
||
|
||
@end | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
// | ||
// AppDelegate.m | ||
// YYImageDemo | ||
// | ||
// Created by ibireme on 15/10/16. | ||
// Copyright © 2015年 ibireme. All rights reserved. | ||
// | ||
|
||
#import "AppDelegate.h" | ||
|
||
@interface AppDelegate () | ||
|
||
@end | ||
|
||
@implementation AppDelegate | ||
|
||
|
||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { | ||
// Override point for customization after application launch. | ||
return YES; | ||
} | ||
|
||
- (void)applicationWillResignActive:(UIApplication *)application { | ||
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. | ||
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. | ||
} | ||
|
||
- (void)applicationDidEnterBackground:(UIApplication *)application { | ||
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. | ||
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. | ||
} | ||
|
||
- (void)applicationWillEnterForeground:(UIApplication *)application { | ||
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. | ||
} | ||
|
||
- (void)applicationDidBecomeActive:(UIApplication *)application { | ||
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. | ||
} | ||
|
||
- (void)applicationWillTerminate:(UIApplication *)application { | ||
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. | ||
} | ||
|
||
@end |
38 changes: 38 additions & 0 deletions
38
Demo/YYImageDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
{ | ||
"images" : [ | ||
{ | ||
"idiom" : "iphone", | ||
"size" : "29x29", | ||
"scale" : "2x" | ||
}, | ||
{ | ||
"idiom" : "iphone", | ||
"size" : "29x29", | ||
"scale" : "3x" | ||
}, | ||
{ | ||
"idiom" : "iphone", | ||
"size" : "40x40", | ||
"scale" : "2x" | ||
}, | ||
{ | ||
"idiom" : "iphone", | ||
"size" : "40x40", | ||
"scale" : "3x" | ||
}, | ||
{ | ||
"idiom" : "iphone", | ||
"size" : "60x60", | ||
"scale" : "2x" | ||
}, | ||
{ | ||
"idiom" : "iphone", | ||
"size" : "60x60", | ||
"scale" : "3x" | ||
} | ||
], | ||
"info" : { | ||
"version" : 1, | ||
"author" : "xcode" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8150" systemVersion="15A204g" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> | ||
<dependencies> | ||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8122"/> | ||
</dependencies> | ||
<scenes> | ||
<!--View Controller--> | ||
<scene sceneID="EHf-IW-A2E"> | ||
<objects> | ||
<viewController id="01J-lp-oVM" sceneMemberID="viewController"> | ||
<layoutGuides> | ||
<viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/> | ||
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/> | ||
</layoutGuides> | ||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> | ||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/> | ||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
<animations/> | ||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> | ||
</view> | ||
</viewController> | ||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||
</objects> | ||
<point key="canvasLocation" x="53" y="375"/> | ||
</scene> | ||
</scenes> | ||
</document> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r"> | ||
<dependencies> | ||
<deployment identifier="iOS"/> | ||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/> | ||
</dependencies> | ||
<scenes> | ||
<!--View Controller--> | ||
<scene sceneID="tne-QT-ifu"> | ||
<objects> | ||
<viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController"> | ||
<layoutGuides> | ||
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/> | ||
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/> | ||
</layoutGuides> | ||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC"> | ||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/> | ||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
<animations/> | ||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> | ||
</view> | ||
</viewController> | ||
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/> | ||
</objects> | ||
<point key="canvasLocation" x="-160" y="879"/> | ||
</scene> | ||
</scenes> | ||
</document> |
Binary file added
BIN
+5.27 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+9.92 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+4.34 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+8.11 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+4.41 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+7.83 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+4.43 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+8.31 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+5.37 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+9.55 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+4.93 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+8.51 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+5.41 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+9.64 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+4.89 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+8.6 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+5.39 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+9.55 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+4.83 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+8.94 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+5.07 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+8.92 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+4.65 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+7.97 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+5.07 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+9.2 KB
Demo/YYImageDemo/EmoticonWeibo.bundle/com.sina.default/[email protected]
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
<plist version="1.0"> | ||
<dict> | ||
<key>CFBundleDevelopmentRegion</key> | ||
<string>en</string> | ||
<key>CFBundleExecutable</key> | ||
<string>$(EXECUTABLE_NAME)</string> | ||
<key>CFBundleIdentifier</key> | ||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | ||
<key>CFBundleInfoDictionaryVersion</key> | ||
<string>6.0</string> | ||
<key>CFBundleName</key> | ||
<string>$(PRODUCT_NAME)</string> | ||
<key>CFBundlePackageType</key> | ||
<string>APPL</string> | ||
<key>CFBundleShortVersionString</key> | ||
<string>1.0</string> | ||
<key>CFBundleSignature</key> | ||
<string>????</string> | ||
<key>CFBundleVersion</key> | ||
<string>1</string> | ||
<key>LSRequiresIPhoneOS</key> | ||
<true/> | ||
<key>UILaunchStoryboardName</key> | ||
<string>LaunchScreen</string> | ||
<key>UIMainStoryboardFile</key> | ||
<string>Main</string> | ||
<key>UIRequiredDeviceCapabilities</key> | ||
<array> | ||
<string>armv7</string> | ||
</array> | ||
<key>UISupportedInterfaceOrientations</key> | ||
<array> | ||
<string>UIInterfaceOrientationPortrait</string> | ||
<string>UIInterfaceOrientationLandscapeLeft</string> | ||
<string>UIInterfaceOrientationLandscapeRight</string> | ||
</array> | ||
</dict> | ||
</plist> |
Oops, something went wrong.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
// | ||
// UIControl+YYAdd.h | ||
// YYKit <https://github.com/ibireme/YYKit> | ||
// | ||
// Created by ibireme on 13/4/5. | ||
// Copyright (c) 2015 ibireme. | ||
// | ||
// This source code is licensed under the MIT-style license found in the | ||
// LICENSE file in the root directory of this source tree. | ||
// | ||
|
||
#import <UIKit/UIKit.h> | ||
|
||
/** | ||
Provides extensions for `UIControl`. | ||
*/ | ||
@interface UIControl (YYAdd) | ||
|
||
/** | ||
Removes all targets and actions for a particular event (or events) | ||
from an internal dispatch table. | ||
*/ | ||
- (void)removeAllTargets; | ||
|
||
/** | ||
Adds or replaces a target and action for a particular event (or events) | ||
to an internal dispatch table. | ||
@param target The target object—that is, the object to which the | ||
action message is sent. If this is nil, the responder | ||
chain is searched for an object willing to respond to the | ||
action message. | ||
@param action A selector identifying an action message. It cannot be NULL. | ||
@param controlEvents A bitmask specifying the control events for which the | ||
action message is sent. | ||
*/ | ||
- (void)setTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; | ||
|
||
/** | ||
Adds a block for a particular event (or events) to an internal dispatch table. | ||
It will cause a strong reference to @a block. | ||
@param block The block which is invoked then the action message is | ||
sent (cannot be nil). The block is retained. | ||
@param controlEvents A bitmask specifying the control events for which the | ||
action message is sent. | ||
*/ | ||
- (void)addBlockForControlEvents:(UIControlEvents)controlEvents block:(void (^)(id sender))block; | ||
|
||
/** | ||
Adds or replaces a block for a particular event (or events) to an internal | ||
dispatch table. It will cause a strong reference to @a block. | ||
@param block The block which is invoked then the action message is | ||
sent (cannot be nil). The block is retained. | ||
@param controlEvents A bitmask specifying the control events for which the | ||
action message is sent. | ||
*/ | ||
- (void)setBlockForControlEvents:(UIControlEvents)controlEvents block:(void (^)(id sender))block; | ||
|
||
/** | ||
Removes all blocks for a particular event (or events) from an internal | ||
dispatch table. | ||
@param controlEvents A bitmask specifying the control events for which the | ||
action message is sent. | ||
*/ | ||
- (void)removeAllBlocksForControlEvents:(UIControlEvents)controlEvents; | ||
|
||
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
// | ||
// UIControl+YYAdd.m | ||
// YYKit <https://github.com/ibireme/YYKit> | ||
// | ||
// Created by ibireme on 13/4/5. | ||
// Copyright (c) 2015 ibireme. | ||
// | ||
// This source code is licensed under the MIT-style license found in the | ||
// LICENSE file in the root directory of this source tree. | ||
// | ||
|
||
#import "UIControl+YYAdd.h" | ||
#import <objc/runtime.h> | ||
|
||
|
||
static const int block_key; | ||
|
||
@interface _YYUIControlBlockTarget : NSObject | ||
|
||
@property (nonatomic, copy) void (^block)(id sender); | ||
@property (nonatomic, assign) UIControlEvents events; | ||
|
||
- (id)initWithBlock:(void (^)(id sender))block events:(UIControlEvents)events; | ||
- (void)invoke:(id)sender; | ||
|
||
@end | ||
|
||
@implementation _YYUIControlBlockTarget | ||
|
||
- (id)initWithBlock:(void (^)(id sender))block events:(UIControlEvents)events { | ||
self = [super init]; | ||
if (self) { | ||
_block = [block copy]; | ||
_events = events; | ||
} | ||
return self; | ||
} | ||
|
||
- (void)invoke:(id)sender { | ||
if (_block) _block(sender); | ||
} | ||
|
||
@end | ||
|
||
|
||
|
||
@implementation UIControl (YYAdd) | ||
|
||
- (void)removeAllTargets { | ||
[[self allTargets] enumerateObjectsUsingBlock: ^(id object, BOOL *stop) { | ||
[self removeTarget:object | ||
action:NULL | ||
forControlEvents:UIControlEventAllEvents]; | ||
}]; | ||
} | ||
|
||
- (void)setTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents { | ||
NSSet *targets = [self allTargets]; | ||
for (id currentTarget in targets) { | ||
NSArray *actions = [self actionsForTarget:currentTarget forControlEvent:controlEvents]; | ||
for (NSString *currentAction in actions) { | ||
[self removeTarget:currentTarget action:NSSelectorFromString(currentAction) | ||
forControlEvents:controlEvents]; | ||
} | ||
} | ||
[self addTarget:target action:action forControlEvents:controlEvents]; | ||
} | ||
|
||
- (void)addBlockForControlEvents:(UIControlEvents)controlEvents | ||
block:(void (^)(id sender))block { | ||
_YYUIControlBlockTarget *target = [[_YYUIControlBlockTarget alloc] | ||
initWithBlock:block events:controlEvents]; | ||
[self addTarget:target action:@selector(invoke:) forControlEvents:controlEvents]; | ||
NSMutableArray *targets = [self _yy_allUIControlBlockTargets]; | ||
[targets addObject:target]; | ||
} | ||
|
||
- (void)setBlockForControlEvents:(UIControlEvents)controlEvents | ||
block:(void (^)(id sender))block { | ||
[self removeAllBlocksForControlEvents:controlEvents]; | ||
[self addBlockForControlEvents:controlEvents block:block]; | ||
} | ||
|
||
- (void)removeAllBlocksForControlEvents:(UIControlEvents)controlEvents { | ||
NSMutableArray *targets = [self _yy_allUIControlBlockTargets]; | ||
NSMutableArray *removes = [NSMutableArray array]; | ||
[targets enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop) { | ||
_YYUIControlBlockTarget *target = (_YYUIControlBlockTarget *)obj; | ||
if (target.events == controlEvents) { | ||
[removes addObject:target]; | ||
[self removeTarget:target | ||
action:@selector(invoke:) | ||
forControlEvents:controlEvents]; | ||
} | ||
}]; | ||
[targets removeObjectsInArray:removes]; | ||
} | ||
|
||
- (NSMutableArray *)_yy_allUIControlBlockTargets { | ||
NSMutableArray *targets = objc_getAssociatedObject(self, &block_key); | ||
if (!targets) { | ||
targets = [NSMutableArray array]; | ||
objc_setAssociatedObject(self, &block_key, targets, OBJC_ASSOCIATION_RETAIN_NONATOMIC); | ||
} | ||
return targets; | ||
} | ||
|
||
@end |
Oops, something went wrong.