2013-04-03 2 views
0

У меня есть вопрос о параметрах в методе, который выглядит следующим образом: - (BOOL)myMethod:(NSObject*)objectInput;Objective-C параметр объекта метод

Вот что я пытаюсь объяснить, в PHP, и как я могу добиться этого в Objective-C:

<?php 
class MyObject { 
    public function myFunction($inputObject) { 
     return $inputObject->someVariable; 
     // get another member from some object not related 
     // to this object. 
    } 
} 
?> 

Мой заголовок Objective-C: (MyObject.h)

@interface MyObject : NSObject 

- (BOOL)myMethod:(NSObject*)inputObject; 

@end 

реализация Obj-C: (MyObject.m)

#import <Foundation/Foundation.h> 
#import "MyObject.h" 

@implementation MyObject 

- (BOOL)myObject:(NSObject*)inputObject { 
    return inputObject.boolMember; 
} 

@end 

Проблема в том, что Xcode говорит, что такой член существует, когда я пытаюсь это сделать в Objective-C. Кроме того, что это называется, что я пытаюсь сделать? Я все еще новичок в Objective-C и все его странности. Но есть ли лучший способ?

+1

лучше узнать Objective-C, изучая [ресурсы о Objective-C] (https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/), а не PHP. – vikingosegundo

+0

доступ к свойствам с ноте «.propertyName» возможен только в том случае, если вы используете объявление @property, кстати, я вижу, что вы запрашиваете экземпляр NSObject в качестве параметра, но это не совсем так, но если вы хотите для использования свойства вам лучше использовать реальный класс объекта, который вы пытаетесь использовать (во избежание предупреждения компиляции) –

ответ

0

Вы пытаетесь получить что-то по имени boolMember от NSObject*, у которого нет метода или переменной, называемой так. Вам нужно либо передать более конкретный объект, который определенно имеет boolMember, либо использовать интроспекцию/отражение, чтобы определить, имеет ли объект что-то, называемое boolMember.

Я больше знаком с использованием отражения на Java, но из того, что я могу найти, я думаю, что вам понадобятся методы, найденные в Apple's Objective-C Runtime reference. Если вы специально хотите переменную, вы должны получить ее с помощью метода class_getProperty.

+0

То, что я пытаюсь сказать, это когда метод _called_ затем возвращает значение этих элементов. – NONE

+0

Думаю, я понимаю. Итак, у вас есть объект класса A, и вы хотите создать метод, который, учитывая объект класса B, будет извлекать некоторые переменные из B? –

+0

Да, именно то, что я пытаюсь сделать. – NONE

1

Вы ссылаетесь на свойство NSObject, которого не существует. Вам необходимо создать свой собственный подкласс NSObject и добавить свойство.

@property (nonatomic, assign) BOOL boolMember 
Смежные вопросы