Какие фрагменты кода содержат ошибки?
Варианты ответа:
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);
}
Всегда ли:
SomeObject *o = [SomeObject alloc];
[o init];
эквивалентно:
SomeObject *o = [[SomeObject alloc] init];
?
Всегда ли:
SomeObject *o = [SomeObject alloc];
[o init];
эквивалентно:
SomeObject *o = [[SomeObject alloc] init];
?
Что напечатает следующий код ?
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];
Какой результат выполнения следующего кода?
#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]);
}
Для чего служат директивы @public, @private, @protected и @package в Objective-C?
Варианты ответа:
1) Для ограничения области видимости методов класса
2) Для ограничения области видимости полей класса
3) Для ограничения области видимости классов
Для чего служат директивы @public, @private, @protected и @package в Objective-C?
Варианты ответа:
1) Для ограничения области видимости методов класса
2) Для ограничения области видимости полей класса
3) Для ограничения области видимости классов
Что такое id?
Что такое id?
Какое расширение файла нужно использовать, чтобы сообщить компилятору использовать Objective-C?
Какое расширение файла нужно использовать, чтобы сообщить компилятору использовать Objective-C?
Как проверить, является ли объект 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]
Содержит ли ошибки следующее объявление категории?
@interface NSObject (UniquelyIdentifiable)
{
UUID uuid;
}
- (UUID) uuid;
- (void) setUuid: (UUID) u;
@end
Содержит ли ошибки следующее объявление категории?
@interface NSObject (UniquelyIdentifiable)
{
UUID uuid;
}
- (UUID) uuid;
- (void) setUuid: (UUID) u;
@end
Будет ли ошибка при компиляции следующего участка кода:
...
- (void) someMethod: (NSString*) str
{
...
}
- (void) someMethod: (NSArray*) str
{
...
}
Варианты ответа:
1) Да, компилятор выдаст ошибку при определении первого метода.
2) Да, компилятор выдаст ошибку при определении второго метода.
3) Нет, ошибки нет, так как в данном случае присутствует перегрузка метода.
Будет ли ошибка при компиляции следующего участка кода:
...
- (void) someMethod: (NSString*) str
{
...
}
- (void) someMethod: (NSArray*) str
{
...
}
Варианты ответа:
1) Да, компилятор выдаст ошибку при определении первого метода.
2) Да, компилятор выдаст ошибку при определении второго метода.
3) Нет, ошибки нет, так как в данном случае присутствует перегрузка метода.
Какой результат выполнения следующего кода?
#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]);
}
Существуют ли в 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;
}
Какие проблемы имеются в следующем коде (используется 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
Что произойдет при попытке скомпилировать и выполнить следующий код?
@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"
Поддерживается ли языком 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")
Что произойдет при попытке скомпилировать и выполнить следующую программу?
#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;
}