Форум программистов, компьютерный форум CyberForum.ru

Отличия С++ от objC - Objective-C

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Objective-C Хранение объектов в массиве http://www.cyberforum.ru/objective-c/thread1255336.html
Добрый вечер! Стоит задача: создать матрицу с задаваемыми размерами строки и столбца и провести над ней операцию. При выполнении задания возникли 2 непреодолимые задачи. Гугл перерыл (включая на инглише), маны читал, ничего не помогает. Первый: можно ли создать массив из NSTextField'ов? По сути, тут надо объявить NSMutableArray из этих TextField'ов, но есть ли такая возможность? И как это должно...
Objective-C Неизвестный объект занимает всю область ячейки UITableViewCell Есть класс наследованный от UITableViewController в методе tableView:cellForRowAtIndexPath я получаю ячейку: cell = ;потом создаю картинку (UIImageView) и текст (UILabel) и вставляю их в ячейку с помощью addSubview но мои картинку и текст закрывает неизвестный белый объект, растянутый на всю ячейку, свои элементы я вижу только потому что они не помещаются в ячейке и выглядываю снизу что... http://www.cyberforum.ru/objective-c/thread1254823.html
Обработка пуша Objective-C
Всм доброго времени суток, вот возникла проблемма, не могу найти рабочее решение, картина такая, мне сервер присылает пуш с определенным типом, я проверяю тип пуша и по нему через локальную нотификацию выполняю какое либо действие, все работает только в состоянии активного приложения, если приложение свернуто либо выключено действия не происходит, если свернуто и приходит пуш по нажатию на пуш...
Xcode error thread 1 signal sigabrt (прокручиваемый список) Objective-C
Ребят только начинаю программировать, делаю все по примеру в книге, но каждый ра какие то проблемы, которые там не описаны, как будто все сразу должно получиться. В моем случае программа каждый раз экстренно прерывается, с чем может быть это связано?
Objective-C Работа с сокетом и сворачивание приложения http://www.cyberforum.ru/objective-c/thread1251761.html
В обработчике события таймера я периодически отправляю некие данные в строке string броадкастом примерно вот так: NSString * address = @"255.255.255.255"; UInt16 port = 888888; NSData * data = ; ; Все отлично, пока я не сворачиваю свое приложение, нажав кнопку домой. После запуска приложения событие таймера обрабатываются, но вот данные уже не отправляются. Приходится...
Objective-C Запретить блокировку экрана в момент работы приложения Здравствуйте! При работе моего приложения в основном используется акселерометр, на экран почти нет касаний. Как программно запретить IOS лочить (блокировать) экран при запущенном приложении? Добавлено через 10 минут Простите, вроде бы нашел сам: .idleTimerDisabled = NO; .idleTimerDisabled = YES; подробнее

Показать сообщение отдельно
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 583
15.09.2014, 05:32
в 8 пункте я бред видимо написал.

Вообщем незнаю точно о чем идет речь.

8) Objective-C allows assigning to self, and allows class initialisers (similar to constructors) to return a completely different class if desired. Contrast to C++, where if you create a new instance of a class (either implicitly on the stack, or explicitly through new) it is guaranteed to be of the type you originally specified.
8) Objective-C позволяет назначать на самоопределение, и позволяет класса инициализаторов (по аналогии с конструкторами), чтобы вернуться совершенно другой класс при желании. Отличие от C ++, где, если вы создаете новый экземпляр класса (либо неявно в стеке, или явно через новый) он гарантированно будет типа вы первоначально заданной.
Но точно знаю что в Objc можно переназначать имя класса уже существующего объекта.
И также можно пененазачить метод у любого объекта. на другой метод из его же.

Добавлено через 6 минут
пример кода с переназначением метода

http://stackoverflow.com/questions/1...02721#19902721

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
@interface UIScreen (I_love_ios_7)
- (CGRect)bounds2;
- (CGRect)boundsForOrientation:(UIInterfaceOrientation)orientation;
@end
 
@implementation UIScreen (I_love_ios_7)
- (CGRect)bounds2
{
    return [self boundsForOrientation:[[UIApplication sharedApplication] statusBarOrientation]];
}
 
- (CGRect)boundsForOrientation:(UIInterfaceOrientation)orientation
{
    CGRect resultFrame = [self bounds2];
    if(UIInterfaceOrientationIsLandscape(orientation))
        resultFrame.size.width -= 20;
    else
        resultFrame.size.height -= 20;
    return resultFrame;
}
@end
 
void Swizzle(Class c, SEL orig, SEL new)
{
    Method origMethod = class_getInstanceMethod(c, orig);
    Method newMethod = class_getInstanceMethod(c, new);
    if(class_addMethod(c, orig, method_getImplementation(newMethod), method_getTypeEncoding(newMethod)))
        class_replaceMethod(c, new, method_getImplementation(origMethod), method_getTypeEncoding(origMethod));
    else
        method_exchangeImplementations(origMethod, newMethod);
}
 
@implementation AppDelegate
 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
// << заменяем у класса UIScreen метод bounds на метод bounds2
        Swizzle([UIScreen class], @selector(bounds2), @selector(bounds)); 
// <<
        [application setStatusBarStyle:UIStatusBarStyleLightContent];
 
        self.window.clipsToBounds =YES;
 
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(applicationDidChangeStatusBarOrientation:)
                                                     name:UIApplicationWillChangeStatusBarOrientationNotification
                                                   object:nil];
        NSDictionary* userInfo = @{UIApplicationStatusBarOrientationUserInfoKey : @([[UIApplication sharedApplication] statusBarOrientation])};
        [[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationWillChangeStatusBarOrientationNotification
                                                            object:nil
                                                          userInfo:userInfo];
    }
 
    return YES;
}
 
- (void)applicationDidChangeStatusBarOrientation:(NSNotification *)notification
{
    UIInterfaceOrientation orientation = [[notification.userInfo objectForKey: UIApplicationStatusBarOrientationUserInfoKey] intValue];
    CGSize size = [[UIScreen mainScreen] boundsForOrientation:orientation].size;
    int w = size.width;
    int h = size.height;
    float statusHeight = 20.0;
    switch(orientation){
        case UIInterfaceOrientationPortrait:
            self.window.frame =  CGRectMake(0,statusHeight,w,h);
            break;
        case UIInterfaceOrientationPortraitUpsideDown:
            self.window.frame =  CGRectMake(0,0,w,h);
            break;
        case UIInterfaceOrientationLandscapeLeft:
            self.window.frame =  CGRectMake(statusHeight,0,w,h);
            break;
        case UIInterfaceOrientationLandscapeRight:
            self.window.frame =  CGRectMake(0,0,w,h);
            break;
    }
}
@end
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru