objective c id*

joe*_*els 1 cocoa pointers objective-c

我在我的可可应用程序中使用KVO验证.我有一个方法

- (BOOL)validateName:(id *)ioValue error:(NSError **)outError
Run Code Online (Sandbox Code Playgroud)

我的控件现在可以验证它们的绑定.如何使用id *NOT 调用该方法id

要使用传入的值(指向字符串指针的指针),我称之为:

NSString * newName = (NSString *)*ioValue;
if ([newName length] < 4) {
Run Code Online (Sandbox Code Playgroud)

否则我会得到不好的执行崩溃...

传入类型转换不起作用: (id *)myStringVar

用常规id传入也不起作用: (id) myStringVar

Rob*_*ier 5

NSError *error;
[self validateName:&myStringVar error:&error];
Run Code Online (Sandbox Code Playgroud)

&符表示"地址".在这种情况下,它是指针的地址,或者换句话说,指向指针的指针(这是什么id*).

  • 更准确地说,`&myStringVar`是指向`myStringVar`变量的指针,即`myStringVar`变量的地址.变量包含一个`id`,因此指向变量的指针的类型是指向`id`的指针 - 换句话说,`id*`. (2认同)