Будет ли ошибка при компиляции следующего участка кода:
... 
- (void) someMethod: (NSString*) str 
{ 
... 
} 
 
- (void) someMethod: (NSArray*) str 
{ 
... 
} 
Варианты ответа:
1) Да, компилятор выдаст ошибку при определении первого метода.
2) Да, компилятор выдаст ошибку при определении второго метода.
3) Нет, ошибки нет, так как в данном случае присутствует перегрузка метода.
   
                                                                       Будет ли ошибка при компиляции следующего участка кода:
... 
- (void) someMethod: (NSString*) str 
{ 
... 
} 
 
- (void) someMethod: (NSArray*) str 
{ 
... 
} 
Варианты ответа:
1) Да, компилятор выдаст ошибку при определении первого метода.
2) Да, компилятор выдаст ошибку при определении второго метода.
3) Нет, ошибки нет, так как в данном случае присутствует перегрузка метода.
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Какие фрагменты кода содержат ошибки?
Варианты ответа:
1)
@try {
@throw [NSNumber numberWithInt: 100];
}
@catch (id e) {
NSLog(@"%@", e);
}
2)
struct excpt { int code; };
@try {
        struct excpt *pe = malloc(sizeof(struct excpt));
        pe->code = 1;
@throw pe;
}
@catch (struct excpt *pe) {
NSLog(@"%d", pe->code);
}
3)
@try {
@throw [NSException exceptionWithName:@"Fun exception" reason:@"Too much fun" @userInfo: nil];
}
@catch (NSObject e) {
NSLog(@"%@", e);
}
4)
@try {
@throw 100;
}
@catch (NSInteger e) {
NSLog(@"%d", e);
}
5)
@try {
@throw @"Awful exception occured!";
}
@catch (id e) {
NSLog(@"%@", e);
}
 
   
                                                                       Какие фрагменты кода содержат ошибки?
Варианты ответа:
1)
@try {
@throw [NSNumber numberWithInt: 100];
}
@catch (id e) {
NSLog(@"%@", e);
}
2)
struct excpt { int code; };
@try {
        struct excpt *pe = malloc(sizeof(struct excpt));
        pe->code = 1;
@throw pe;
}
@catch (struct excpt *pe) {
NSLog(@"%d", pe->code);
}
3)
@try {
@throw [NSException exceptionWithName:@"Fun exception" reason:@"Too much fun" @userInfo: nil];
}
@catch (NSObject e) {
NSLog(@"%@", e);
}
4)
@try {
@throw 100;
}
@catch (NSInteger e) {
NSLog(@"%d", e);
}
5)
@try {
@throw @"Awful exception occured!";
}
@catch (id e) {
NSLog(@"%@", e);
}
 
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Что такое id?
   
                                                                       Что такое id?
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Какой результат выполнения следующего кода?
#include     
 
void main() {    
int testarr[3][2][2] = {1,2,3,4,5,6,7,8,9,-1,-2, -3};          
printf("%d", testarr[2][1][0]);      
} 
   
                                                                       Какой результат выполнения следующего кода?
#include     
 
void main() {    
int testarr[3][2][2] = {1,2,3,4,5,6,7,8,9,-1,-2, -3};          
printf("%d", testarr[2][1][0]);      
} 
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Содержит ли ошибки следующее объявление категории?
@interface NSObject (UniquelyIdentifiable) 
{ 
     UUID     uuid; 
} 
- (UUID) uuid; 
- (void) setUuid: (UUID) u; 
@end 
   
                                                                       Содержит ли ошибки следующее объявление категории?
@interface NSObject (UniquelyIdentifiable) 
{ 
     UUID     uuid; 
} 
- (UUID) uuid; 
- (void) setUuid: (UUID) u; 
@end 
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Для чего служат директивы @public, @private, @protected и @package в Objective-C?
Варианты ответа:
1) Для ограничения области видимости методов класса
2) Для ограничения области видимости полей класса
3) Для ограничения области видимости классов
   
                                                                       Для чего служат директивы @public, @private, @protected и @package в Objective-C?
Варианты ответа:
1) Для ограничения области видимости методов класса
2) Для ограничения области видимости полей класса
3) Для ограничения области видимости классов
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Всегда ли:
SomeObject *o = [SomeObject alloc]; 
[o init]; 
эквивалентно:
SomeObject *o = [[SomeObject alloc] init]; 
?
   
                                                                       Всегда ли:
SomeObject *o = [SomeObject alloc]; 
[o init]; 
эквивалентно:
SomeObject *o = [[SomeObject alloc] init]; 
?
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Какой результат выполнения следующего кода?
#include     
 
void main() {    
int testarr[3][2][2] = {1,2,3,4,5,6,7,8,9,-1,-2, -3};          
printf("%d", testarr[2][1][0]);      
} 
   
                                                                       Какой результат выполнения следующего кода?
#include     
 
void main() {    
int testarr[3][2][2] = {1,2,3,4,5,6,7,8,9,-1,-2, -3};          
printf("%d", testarr[2][1][0]);      
} 
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    В каких фрагментах кода допущены ошибки при создании экземпляра класса? 
   
                                                                       В каких фрагментах кода допущены ошибки при создании экземпляра класса? 
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Что произойдет при попытке скомпилировать и выполнить следующий код?
@interface QNObject: NSObject { @public  int n; } @end 
@implementation QNObject 
- (void) :(int) a   // 1 
{ 
    n = a; 
} 
@end 
 
int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
 
    QNObject *o = [[[QNObject alloc] init] autorelease]; 
     
    [o :10];   // 2 
    NSLog(@"n = %d", o->n);   // 3 
 
    [pool release]; 
     
    return 0; 
} 
Варианты ответа:
1) Произойдут ошибки компиляции в строках 1 и 2
2)  Произойдет ошибка времени выполнения в строке 2
3) Код скомпилируется без ошибок, в результате выполнения в лог будет добавлена строка "n = 0"
4) Произойдут ошибки компиляции в строках 1, 2 и 3
5) Произойдет ошибка компиляции в строке 2
6) Код скомпилируется без ошибок, в результате выполнения в лог будет добавлена строка "n = 10"
   
                                                                       Что произойдет при попытке скомпилировать и выполнить следующий код?
@interface QNObject: NSObject { @public  int n; } @end 
@implementation QNObject 
- (void) :(int) a   // 1 
{ 
    n = a; 
} 
@end 
 
int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
 
    QNObject *o = [[[QNObject alloc] init] autorelease]; 
     
    [o :10];   // 2 
    NSLog(@"n = %d", o->n);   // 3 
 
    [pool release]; 
     
    return 0; 
} 
Варианты ответа:
1) Произойдут ошибки компиляции в строках 1 и 2
2)  Произойдет ошибка времени выполнения в строке 2
3) Код скомпилируется без ошибок, в результате выполнения в лог будет добавлена строка "n = 0"
4) Произойдут ошибки компиляции в строках 1, 2 и 3
5) Произойдет ошибка компиляции в строке 2
6) Код скомпилируется без ошибок, в результате выполнения в лог будет добавлена строка "n = 10"
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Как проверить, является ли объект obj экземпляром класса NSMyControl?
Варианты ответа:
1) 
[obj isKindOfClass: [NSMyControl class]]
2)
[obj conformsToProtocol: @protocol(NSControl)]
3)
[obj isMemberOfClass: [NSMyControl class]]
4)
[obj isMemberOfClass: NSMyControl]
5)
[obj isKindOfClass: NSMyControl]
 
   
                                                                       Как проверить, является ли объект obj экземпляром класса NSMyControl?
Варианты ответа:
1) 
[obj isKindOfClass: [NSMyControl class]]
2)
[obj conformsToProtocol: @protocol(NSControl)]
3)
[obj isMemberOfClass: [NSMyControl class]]
4)
[obj isMemberOfClass: NSMyControl]
5)
[obj isKindOfClass: NSMyControl]
 
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Что произойдет при попытке скомпилировать и выполнить следующую программу?
#import "Cocoa/Cocoa.h" 
 
@protocol Helping 
 - (void) help; 
@end 
 
@interface QNFirstObject: NSObject  {} @end 
 
@implementation QNFirstObject 
- (void) help { } 
@end 
 
@interface QNSecondObject: NSObject {} @end 
 
@implementation QNSecondObject 
- (void) help { } 
@end 
 
int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
     
    QNFirstObject *o1 = [[[QNFirstObject alloc] init] autorelease]; 
    QNSecondObject *o2 = [[[QNSecondObject alloc] init] autorelease]; 
     
    NSLog(@"%d %d", [o1 conformsToProtocol: @protocol(Helping)], [o2 conformsToProtocol: @protocol(Helping)]); 
     
    [pool release]; 
     
    return 0; 
} 
   
                                                                       Что произойдет при попытке скомпилировать и выполнить следующую программу?
#import "Cocoa/Cocoa.h" 
 
@protocol Helping 
 - (void) help; 
@end 
 
@interface QNFirstObject: NSObject  {} @end 
 
@implementation QNFirstObject 
- (void) help { } 
@end 
 
@interface QNSecondObject: NSObject {} @end 
 
@implementation QNSecondObject 
- (void) help { } 
@end 
 
int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
     
    QNFirstObject *o1 = [[[QNFirstObject alloc] init] autorelease]; 
    QNSecondObject *o2 = [[[QNSecondObject alloc] init] autorelease]; 
     
    NSLog(@"%d %d", [o1 conformsToProtocol: @protocol(Helping)], [o2 conformsToProtocol: @protocol(Helping)]); 
     
    [pool release]; 
     
    return 0; 
} 
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Существуют ли в Objective-C вложенные (nested) классы? 
   
                                                                       Существуют ли в Objective-C вложенные (nested) классы? 
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Что произойдет при попытке скомпилировать и выполнить следующий код?
#import "Cocoa/Cocoa.h" 
 
@interface QNObject: NSObject 
{ 
    int field; 
} 
@end 
 
@implementation QNObject 
- (id) init 
{ 
    if(self = [super init]) 
    { 
        field = 1; 
    } 
     
    return self; 
} 
@end 
 
int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
     
    QNObject *o = [[QNObject alloc] init]; 
 
    int n = 0; 
    n = o.field; 
 
    NSLog(@"n = %d", n);  
     
    [o release]; 
     
    [pool release]; 
     
    return 0; 
}    
   
                                                                       Что произойдет при попытке скомпилировать и выполнить следующий код?
#import "Cocoa/Cocoa.h" 
 
@interface QNObject: NSObject 
{ 
    int field; 
} 
@end 
 
@implementation QNObject 
- (id) init 
{ 
    if(self = [super init]) 
    { 
        field = 1; 
    } 
     
    return self; 
} 
@end 
 
int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
     
    QNObject *o = [[QNObject alloc] init]; 
 
    int n = 0; 
    n = o.field; 
 
    NSLog(@"n = %d", n);  
     
    [o release]; 
     
    [pool release]; 
     
    return 0; 
}    
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Какое расширение файла нужно использовать, чтобы сообщить компилятору использовать Objective-C?  
   
                                                                       Какое расширение файла нужно использовать, чтобы сообщить компилятору использовать Objective-C?  
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Дан следующий код:
#import "Cocoa/Cocoa.h" 
 
@interface QNObject: NSObject 
{ 
    int field; 
} 
@end 
 
@implementation QNObject 
- (id) init 
{ 
    if(self = [super init]) 
    { 
        field = 1; 
    } 
     
    return self; 
} 
@end 
 
int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
     
    QNObject *o = [[QNObject alloc] init]; 
 
    int n =  /* ? */ ; 
 
    NSLog(@"n = %d", n);  
     
    [o release]; 
     
    [pool release]; 
     
    return 0; 
} 
Чем заменить /* ? */, чтобы записать в переменную n значение поля field?
Варианты ответа:
1)
[o getValueForKey:@"field"]
2)
o.field
3)
[o valueForKey:@"field"]
4)
[o field]
5)
[(NSNumber*)[o valueForKey:@"field"] intValue]
6)
o->field
7)
o.getValueForKey:("field")
 
   
                                                                       Дан следующий код:
#import "Cocoa/Cocoa.h" 
 
@interface QNObject: NSObject 
{ 
    int field; 
} 
@end 
 
@implementation QNObject 
- (id) init 
{ 
    if(self = [super init]) 
    { 
        field = 1; 
    } 
     
    return self; 
} 
@end 
 
int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
     
    QNObject *o = [[QNObject alloc] init]; 
 
    int n =  /* ? */ ; 
 
    NSLog(@"n = %d", n);  
     
    [o release]; 
     
    [pool release]; 
     
    return 0; 
} 
Чем заменить /* ? */, чтобы записать в переменную n значение поля field?
Варианты ответа:
1)
[o getValueForKey:@"field"]
2)
o.field
3)
[o valueForKey:@"field"]
4)
[o field]
5)
[(NSNumber*)[o valueForKey:@"field"] intValue]
6)
o->field
7)
o.getValueForKey:("field")
 
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Поддерживается ли языком Objective-C интроспекция? 
   
                                                                       Поддерживается ли языком Objective-C интроспекция? 
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Какие проблемы имеются в следующем коде (используется ARC)?
@interface SomeClass : NSObject 
@property (nonatomic, strong) Button *doneButton; 
@property (nonatomic) BOOL isDone; 
@end 
 
 
@implementatnion 
 
... 
 
- (void)someMethod { 
    [self.doneButton onTouch:^(id sender) { 
          self.isDone = YES; 
    }]; 
} 
 
... 
 
@end 
Варианты ответа:
 1) В данном коде нет никаких проблем
 2) Переменная isDone не может изменяться внутри блока, т.к. объявлена без модификатора __block
 3) Утечка памяти в результате retain-цикла
 4) В блоке должен быть объявлен возвращаемый тип, в том числе void
   
                                                                       Какие проблемы имеются в следующем коде (используется ARC)?
@interface SomeClass : NSObject 
@property (nonatomic, strong) Button *doneButton; 
@property (nonatomic) BOOL isDone; 
@end 
 
 
@implementatnion 
 
... 
 
- (void)someMethod { 
    [self.doneButton onTouch:^(id sender) { 
          self.isDone = YES; 
    }]; 
} 
 
... 
 
@end 
Варианты ответа:
 1) В данном коде нет никаких проблем
 2) Переменная isDone не может изменяться внутри блока, т.к. объявлена без модификатора __block
 3) Утечка памяти в результате retain-цикла
 4) В блоке должен быть объявлен возвращаемый тип, в том числе void
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Что напечатает следующий код ?
NSUInteger a = -1; 
NSInteger b = 1; 
 
NSLog(@"%d\n",a < b); 
   
                                                                       Что напечатает следующий код ?
NSUInteger a = -1; 
NSInteger b = 1; 
 
NSLog(@"%d\n",a < b); 
   
                                   
                                    
                                 
                                    
                                        
                                        
                                    
                                 
                                
                                    
								
	
                                
                             
                            
                            
                            
      
                            
 
                            
                                
                                
                                    Какие фрагменты кода содержат ошибки?
Варианты ответа:
1) 
NSArray *arr = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", nil];
...
[arr release];
2)
NSArray *arr = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", nil];
...
[arr autorelease];
3)
NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", nil];
...
[arr dealloc];
4)
NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", nil];
...
[arr release];
   
                                                                       Какие фрагменты кода содержат ошибки?
Варианты ответа:
1) 
NSArray *arr = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", nil];
...
[arr release];
2)
NSArray *arr = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", nil];
...
[arr autorelease];
3)
NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", nil];
...
[arr dealloc];
4)
NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", nil];
...
[arr release];