有人可以在OOP上下文中提供方法与函数的简单解释吗?
我是一个iOS新手.我有一个选择器方法如下 -
- (void) fooFirstInput:(NSString*) first secondInput:(NSString*) second
{
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试实现这样的东西 -
[self performSelector:@selector(fooFirstInput:secondInput:) withObject:@"first" withObject:@"second" afterDelay:15.0];
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误说 -
Instance method -performSelector:withObject:withObject:afterDelay: not found
Run Code Online (Sandbox Code Playgroud)
关于我缺少什么的任何想法?
当我尝试将当前代码迁移到ARC时,每当我将NSString作为NSInvocation参数传递时,我都会收到错误.
例:
NSInvocation inv = ...;
NSString *one = @"Hello World!";
[inv setArgument:&one atIndex:2];
Run Code Online (Sandbox Code Playgroud)
当我使用编辑菜单中的重构 - >转换为Objective-C ARC选项时,会发生错误.文本是"NSInvocation的setArgument与不具有__unsafe_retained的所有权的对象一起使用是不安全的."
我怎么能绕过这个?
这段代码给了我EXC_BAD_ACCESS,为什么?
NSMutableDictionary *d = [[NSMutableDictionary alloc] init];
IMP imp= [d methodForSelector:@selector(setObject:forKey:) ];
imp(d, @selector( setObject:forKey:), @"obj", @"key");
Run Code Online (Sandbox Code Playgroud)
我刚刚开始使用IMP,第一次尝试..没有运气.不知道为什么我得到错误,也..在过去,当我得到EXC_BAD_ACCESS时,消息在控制台打印,这次错误行突出显示.
一些注意事项:ARC已启用,XCode 4.3.2,该项目使用Objective-C++作为默认语言/编译器,此代码位于项目的最开始
多谢你们
cocoa ×1
function ×1
ios ×1
iphone ×1
methods ×1
nsinvocation ×1
objective-c ×1
oop ×1
selector ×1
terminology ×1