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