Эй, я очень новичок в программировании Objective C, и я застрял. Когда я создаю функцию I, он не может использовать переменные, которые я создал для ярлыков или текстовых просмотров, и т. Д. И всякий раз, когда я вызываю их в функции viewDidLoad, я должен делать либо self (переменное имя), либо _ (variableName) и это не позволит мне сделать это за пределами функции viewDidLoad. Есть ли способ доступа к ним за его пределами?Как использовать переменные, созданные за пределами viewDidLoad
ответ
Похоже, что вы используете авторизованное свойство. Используя свойство Auto Synthesized, вам не нужно @shtesize объектов. @sythesize object = _object;
будет неявно реализовываться в этом случае.
Таким образом, вы можете получить доступ к объекту, используя self.object или _object.
Вы можете @synthesize, чтобы избежать использования объектов через self.varName или _varName. Вы можете напрямую использовать его с помощью varName.
Почему, когда я создаю я работать, он не может использовать переменные я созданные для этикеток или TextViews и т.д.
С одной стороны, необходимо провести различие между функции и метода экземпляра. В Objective-C классы могут иметь переменные экземпляра (переменные, которые являются частью экземпляра этого класса) и методы экземпляра (аналогичные функциям, связанным с экземпляром этого класса). Классы также могут иметь свойства, которые используются скорее как переменные экземпляра, поскольку они являются значениями, связанными с объектом, но к ним обращаются через методы доступа. Функции, с другой стороны, не являются частью какого-либо класса. Таким образом, класс имеет интерфейс, где переменные экземпляра и методы объявляются, как это:
@interface Person : NSObject
{
NSString *firstName;
NSString *lastName;
}
@property (readonly) NSString *fullName;
@property (strong) NSArray *friends;
@property (assign) int age;
- (id)initWithFirstName:(NSString*)first lastName:(NSString*)last;
- (void)addFriend:(Person*)friend;
@end
А также реализация, как это:
@implementation Person
- (id)initWithFirstName:(NSString*)first lastName:(NSString*)last
{ /* code goes here */ }
- (void)addFriend:(Person*)friend
{ /* code goes here */ }
- (NSString *)fullName
{ return [NSString stringWithFormat:@"%@ %@", firstName, lastName; }
@end
Эти вещи в реализации являются методы экземпляра, так как обозначенные -
в начале и тот факт, что они определены в блоке @implementation
. (Если у них были +
вместо -
, они были бы методами класса вместо методов экземпляра - я дам вам прочитать об этом в документах.) Доступ к свойствам осуществляется путем вызова соответствующих методов доступа, используя либо обычные вызовы метода, либо точку нотации, поэтому если у вас есть:
Person *george = [[Person alloc] initWithFirstName:@"George" lastName:@"Bailey"]
все они действительны:
NSString *name1 = george.fullName;
NSString *name2 = [george fullName];
george.age = 45;
[george setAge:45];
int years1 = george.age;
int years2 = [george age];
Кроме того, self
указатель на "текущий объект". Вы можете использовать его в методах экземпляра, чтобы объекты могли вызывать свои собственные методы и получать доступ к своим собственным свойствам. Например, Person
класс может содержать метод, как это:
- (NSString *) nameAndAge { NSString * nameAndAge = [NSString stringWithFormat: @ "% @:% D", self.fullName, сам.возраст]; }
функции, с другой стороны, не являются частью любого класса, синтаксиса функции использования C, а не Синтаксис метода Objective-C, и не определены в блоке @implementation
:
BOOL isMiddleAged(Person* person)
{
return (person.age > 30) && (person.age < 60);
}
Вы не можете использовать функцию self
в функции, потому что функция не связана с объектом, поэтому нет ничего для self
, чтобы указать на. Однако вы можете использовать свойства других объектов, о которых вы знаете, например, person.age
в приведенном выше примере.
И всякий раз, когда я называю их в функции viewDidLoad, я должен сделать либо самостоятельно. (ИмяПеременный) или _ (имяПеременный), и это не будет позволять мне делать , что за пределы функции viewDidLoad.
Вы должны иметь доступ к свойствам вашего контроллера вида. Как объяснялось выше, self.(variableName)
- это способ доступа к свойствам. _(variableName)
относится к переменной (часто генерируемой компилятором), которая хранит значение свойства. (Обычно вы не должны обращаться к этим переменным непосредственно за пределами методов инициализации, а -dealloc
- вместо этого используйте аксессоры свойств.) Эти свойства можно использовать в любом методе класса, а не только -viewDidLoad
. Вы также можете получить доступ к свойствам других объектов, заменив self
на имя указателя на объект, как и в случае с person
в isMiddleAged()
.
- 1. Как использовать переменные за пределами ViewDidLoad() - Swift
- 2. Как использовать переменные за пределами метода
- 3. Использовать переменные за пределами подпроцесса в bash
- 4. IOS, Невозможно передать за пределами viewDidLoad
- 5. Как использовать переменные за пределами page.open в PhantomJS
- 6. Как использовать переменные, определенные в, если заявление за пределами его
- 7. Gulp: переменные за пределами gulpfile.js?
- 8. Как использовать JSTL созданные переменные в JavaScript?
- 9. Использовать глобальные переменные вне функции viewDidLoad()
- 10. Асинхронные переменные за пределами цикла for
- 11. Локальные переменные в viewdidload
- 12. Переменные из оператора switch за пределами
- 13. Как читать переменные сеанса в dokuwikis main.php, созданные за пределами страниц документа?
- 14. C# try and catch + переменные за пределами
- 15. Использование выделенного и инициализированного объекта за пределами viewDidLoad?
- 16. Сохранение данных за пределами viewDidLoad в объекте c ios
- 17. Возвращаемые переменные из внутренней функции за пределами
- 18. Определить переменные за пределами класса PHP
- 19. использовать данные за пределами foreach
- 20. Статические переменные появляются за пределами основного метода
- 21. Статические переменные, объявленные за пределами класса
- 22. Использовать свойство за пределами блока: findObjectsInBackgroundWithBlock:
- 23. Как использовать строку за пределами метода OnCreate
- 24. Как использовать переменную за пределами foreach (Smarty)?
- 25. Как использовать переменную ценность за пределами блока?
- 26. Как использовать переменную за пределами IF
- 27. Как использовать переменную за пределами запроса GET?
- 28. Как использовать findPreference за пределами PreferenceActivity?
- 29. Как использовать setPassword за пределами методов сервера
- 30. Как использовать переменную за пределами try/catch?
Я использую MKMapView, и я создал MKCoordinateRegion глобальную переменную, и я меняю ее атрибуты в IBAction, вызываемые UISlider, но он не изменяется в симуляторе? Есть ли что-то, что мне нужно сделать, чтобы перезагрузить карту? –