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