Значение следующего кода - PullRequest
0 голосов
/ 17 декабря 2010

У меня есть пример приложения, которое я скачал из сети
В этом я не смог понять следующий код

UILocalNotification *localNotif = [[UILocalNotification alloc] init];

if (localNotif == nil) 
    return;

также

  if (!array1) 
        return;

означает ли этот код объект, если объектне существует, то вернуть .....

HELP

Ответы [ 3 ]

5 голосов
/ 17 декабря 2010

В Какао инициализатор будет возвращать указатель объекта, если вызов был успешным, или ноль, если он не смог создать объект.

В обоих случаях проверяется наличие объекта.На самом деле, проверка на наличие указателя на объект и просто возврат, если объект не существует.В качестве примера здесь приведена распространенная форма инициализатора для объекта.

- (id)init  {
    // Call the superclass initialiser first and check that it was successful.
    if (!(self = [super init])) {
        // If the superclass initialiser failed then self will be nil.
        // return a nil because we cannot create this object.
        return nil; // Bail!
    }
    // Do more initialising 
    // If we can initialise the superclass and ourself, return a pointer to ourself
    return self;
}

Однако предоставленных вами фрагментов недостаточно для определения правильности кода.Например, первый пример неверен, если он является частью метода инициализатора, поскольку он не возвращает какого-либо объекта.

Редактировать

Из ваших дальнейших примеров обаиз них print hiiiiiiii

NSArray *arr;
if(arr) { NSLog(@"hiiiiii");

и

NSArray *arr = [[NSArray alloc]init];
if(arr) { NSLog(@"hiiiiii");

В первом случае вы объявляете arr указателем на NSArray, но поскольку он не был инициализирован, этот указатель являетсяпросто мусор значение случайных чисел.Но это не nil Так что ваше if-утверждение оценивается как истинное.Это не значит, что это действительный указатель на NSArray.

Во втором примере вы объявляете указатель NSArray и инициализируете его.Это было успешно инициализировано, поэтому указатель не равен nil и оператор if оценивается как true.В этом случае у вас есть действительный указатель NSArray.

Объявление не инициализируется!

Возможно, если вы объясните, что именно вы пытаетесь сделать, мы сможем лучше ответить на ваш запрос.вопросы.

2 голосов
/ 17 декабря 2010

Они оба проверяют, равен ли объект нулю.В первом случае это выглядит немного глупо:)

0 голосов
/ 17 декабря 2010

Да, за исключением первого случая, localNotif не будет nil, потому что он был установлен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...