在ARC下使用
1 |
[theTarget performSelector:theTarget withObject:Nil]; |
会出现警告:performselector-may-cause-a-leak-because-its-selector-is-unknown
解决方法:
1:添加如下宏
1 |
#define SuppressPerformSelectorLeakWarning(Stuff) \ |
3 |
_Pragma( "clang diagnostic push" ) \
|
4 |
_Pragma( "clang diagnostic ignored \"-Warc-performSelector-leaks\"" ) \
|
6 |
_Pragma( "clang diagnostic pop" ) \
|
2:使用宏
1 |
SuppressPerformSelectorLeakWarning([theTarget performSelector:theAction withObject:@ "hello" ]);
|
参考:http://stackoverflow.com/questions/7017281/performselector-may-cause-a-leak-because-its-selector-is-unknown
分享到:
相关推荐
在Objective-C(简称OC)中,`performSelector`方法是基于消息传递机制的关键特性之一,它允许我们在运行时动态地调用对象的方法。这个特性使得OC具有高度的灵活性和动态性,是许多设计模式和编程实践的基础。接下来...
swift并没有提供performSelector ,我伪代码写了一个扩展类。使用时请小心。详见我博文说明。http://blog.csdn.net/fengsh998/article/details/35842441
[id someObject performSelector:@selector(aMethod:)]; ``` 这里的`aMethod:`是你要调用的方法名,冒号表示该方法接受一个参数。如果方法无参数,可以省略冒号。`performSelector`还支持延迟执行和带参数的调用,...
例如,`[anObject performSelector:@selector(aMethod)]` 就是向 `anObject` 发送消息,调用其 `aMethod` 方法。 3. **协议(Protocols)**:Objective-C 的协议类似于 Java 或 C# 中的接口,用于定义一组方法签名...
例如,`[anObject performSelector:@selector(aMethod)]`就是向`anObject`发送一个消息,调用`aMethod`方法。 2. **类与实例**:Objective-C中的所有对象都是某个类的实例。定义类时,我们声明属性(实例变量)和...
1. **选择器**:Objective-C中的方法通常通过选择器来调用,例如`[object performSelector:@selector(methodName)]`。 2. **协议**:Objective-C支持协议,即接口的概念,用于定义一组方法,其他类必须实现这些方法...
[person performSelector:selector]; ``` ##### 2.3 属性与合成 - **属性声明**:使用`@property`来声明属性,例如: ```objective-c @interface Person : NSObject @property (nonatomic, copy) NSString *...
例如,`[anObject performSelector:@selector(aMethod)]`就是在向`anObject`发送`aMethod`的消息。 4. **协议(Protocols)**:Objective-C的协议类似于Java和C#的接口,定义了一组方法签名,但不提供具体实现。...
- **Memory Warnings**:系统发出警告时,开发者应释放不必要的内存占用。 #### 二、Delegate与Protocol - **Delegate机制**: - 一种设计模式,用于通知一个对象处理另一个对象的动作。 - 通过定义一个协议并...
例如,`[anObject performSelector:@selector(aMethod)]` 就是在向`anObject`发送一个消息,让它执行`aMethod`方法。 2. **类与对象**:Objective-C中的所有事物都是对象,而类是创建这些对象的蓝图。类定义了对象...
例如,`[anObject performSelector:@selector(aMethod)]`就相当于在其他语言中调用一个方法。 2. **类与对象**: 类是对象的蓝图,定义了一组属性(实例变量)和行为(方法)。Objective-C中的所有对象都继承自根类`...
例如,`[anObject performSelector:@selector(aMethod)]` 将会调用`anObject`上的`aMethod`方法。这种动态调用方式是Objective-C的多态性核心。 1. **选择器定义**: - 在Objective-C中,你可以使用`@selector()`...
[object performSelector:@selector(method)]; ``` - **协议**: 定义一组方法签名,类可以通过实现这些方法来遵循协议。 ```objective-c @protocol ProtocolName -(void) requiredMethod; @end ``` - **...
- `performSelector:withObject:afterDelay:inModes:` - 延迟并在特定RunLoop模式下执行 selector。 理解并熟练运用这些方法,能够帮助开发者编写出高效、流畅的应用程序。在实际项目中,还需要结合GCD(Grand ...
例如,`[anObject performSelector:@selector(aMethod)]`。 4. **@interface 和 @implementation**: `@interface` 用于声明类,包含属性(properties)和方法(methods)。`@implementation` 部分实现接口中的声明...
在ARC环境下,Block的内存管理由编译器自动处理,但在MRC环境下,需要手动管理Block的生命周期。 #### 十一、有两个数组a,b,大小都为n,数组元素的值任意,无序;要求:通过交换a,b中的元素,使数组a元素的和与数组...
例如,`[object performSelector:@selector(method)];` 表示向`object`发送一个名为`method`的消息。 4. **协议(Protocols)**: Objective-C的协议类似于Java或C#的接口,定义了一组方法签名,可以被类实现或...
GCD(Grand Central Dispatch)是Apple推出的一种强大的多线程解决方案,它提供了简单易用的接口来管理线程。本文主要探讨在iOS中使用GCD进行延迟执行的方法。 首先,iOS提供了两种常见的延时执行方式: 1. 调用`...
[self performSelector:@selector(reloadData) withObject:nil afterDelay:0]; ``` - `aSelector`参数表示要调用的方法。 - `argument`参数表示传递给方法的对象。 - `seconds`参数表示延迟的时间间隔。 - **...