Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Что использовать: Swift или Objective-C?

Добрый ночи, возник такой вопрос на чем лучше сейчас писать программы (Swift, Objective-C)/

Вижу оба кода вроде понятный.

Посоветуйте что использовать для создания программы простой.
Ответ: Я Основы Swift`a знаю хотел удостовериться что не ошибся в выборе между (Swift, Objective C)
Вопрос: Учить ли Objective-C новичку или сразу Swift?

Хочу начать изучать программирование под iOS есть ли смысл учить старый Objective-C или можно сразу браться за Swift? И долго ли еще будет жив Objective-C?
Ответ: думаю, можно сразу и свифт учить, но выгода знания обж-с в том, что большинство документации по различным сдк все еще описаны в обж-с, куча примеров и официальных туториалов так же

потому для полноценного программирования на иОС, знания обж-с, хотя бы маломальские, нужны

а долго ли он будет жив нигде не говорится, известно только, что пока что будет
Вопрос: Выбор профиля: C# или objective C?

Всем привет. В данный момент я уже год после выпуска работаю pl/sql oracle разработчиком, но в ближайшее время хочу сменить профиль. Выбора два: разработка под apple или C#.

На С# я года 3 писал в универе, на нем же писал диплом и даже прошел собеседование в одну компанию на вакансию С# разработчика в проект в области компьютерного зрения.

На objectiveC не писал ни разу (только вчера поднял Хакинтош, плюс уже имеется iPad). В разработке под Apple (видимо, iOS) меня привлекает отсутствие жесткого энтерпрайза, как в случае с С#. Предметные области там зачастую более интересные.

По поводу c# в интернете гуглятся в большинстве своем вакансии на ASP.NET, но вебом заниматься не хочу. Плюс дополнительно займет время изучение asp.net, штудирование CSS, HTML, JavaScript, jQuery и пр. и пр.
Но сам язык c# и платформа .net мне нравятся, плюс развивается он очень быстро.
В ObjectiveC пугает абсолютно новые вещи, плюс недавнее анонсирование swift. Стоит ли сейчас все силы вкладывать в его изучение?

Смену профиля я хочу совместить с переездом в Новосибирск, где придется снимать квартиру (соответственно, минимальная ЗП для выживания ~40к для джуниора).
В общем, подскажите, что думаете о перспективности в выборе из этих двух направлений?
Ответ:
Цитата(DenageS @  9.7.2014,  12:03 )
По поводу c# в интернете гуглятся в большинстве своем вакансии на ASP.NET, но вебом заниматься не хочу.

Есть платформа , которая позволяет на C# писать кроссплатформенно. Спрос на таких разработчиков довольно велик сейчас.

Цитата(Bitter @  10.7.2014,  20:34 )
мне на то время нравился apple 

А что так? Прошла любовь? ;-)
Вопрос: C++(Objective-c++) для iOS разработчика

В каких областях это применяется и на сколько он нужен iOS разработчику?
п.c Поиск использовал нашел 1 тему, но хотелось бы более развернутых ответов и мнений .
Спасибо!
Ответ: В своей практике использовал два раза:
1) У заказчика были плюсовые библиотеки (приложение строило разные графики на основе входных данных), которым надо было скармливать значения, и правильно разбирать выходной результат.

2) Нужно было расположить в UICollectionView ячейки разного размера и формы таким образом, чтобы они максимально эффективно использовали пространство. Нашел в сети реализацию "задачи о ранце", ожидаемо на С++ и подпилил под использование в своем проекте.

Знание С++ у меня близкое к плинтусу, но для вышеописанных задач его хватило.
Более глубокого понимания пока так и не потребовалось. Не знаю, к счастью, или нет))
Вопрос: Как оптимизировать код objective-c?

я не могу винести загрузку в метод viewDidLoad. Знаю что вопрос глупый, но я всё перепробовал и картинки не выводит. :dash1  Помогите пожалуйста. Вот код из ячейки таблицы:
Код

NSString *filePath1 = [NSString stringWithFormat:@"%@",responsePhotos[0]];
NSURL *imgurl=[NSURL URLWithString:filePath1];
dispatch_queue_t queue =     dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
   NSData *dataimage1 = [NSData dataWithContentsOfURL:imgurl];
   UIImage *imim1 = [UIImage imageWithData:dataimage1];
    dispatch_async(dispatch_get_main_queue(), ^{
        if (imim1==nil) {
            cell.imgauto1.image=[UIImage imageNamed:@"camera_a.gif"];
        }else{
            cell.imgauto1.image=imim1;
        }
    });
});

Ответ:
Спасибо, за Ваш совет. Можете помочь с этим: В методе viewDidLoad я должен загрузить часть изображений, и уже передать их скачанные в ячейку, и назначить. Почему часть, потому что качать например 100 картинок, это значит что пользователь будет все это время ждать их загрузки, хочу использовать infinityscroll и pulltorefresh, принцип такой:дойдя до конца таблицы, 10 ячейки, например, начну загрузку еще 10 штук, и потом обновлю таблицу. для кеширование хочу использовать SDWebImageCash. У меня не получаеться это реализовать. Мне б хоть какой-то пример как это реализовано.
Вопрос: Программирование на C++

Я понимаю, что до меня многие могли задать этот вопрос, но всё же: есть какой-либо движок, компилятор или что-то в этом роде для создания программ формата iOS? Просто много времени изучал C и C++, как раз для разработки под iOS, но тогда не подумал посмотреть, какие языки она поддерживает, т.к. где-то как-то слышал, что кто-то сделал программу на C++. Не очень хочется после этого верить, что разрабатывать можно только на Objective-C. В интернете пишут, что программа на C будет понятна компилятору на Objective-C, но моя не работает. Прошу помочь и отвечать по теме.
Ответ: Друзья,помогите решить задачу
Нужно найти количество пятерок в каждой строке в двумерном массиве.
Выручите,пожалуйста.
Вопрос: Программирование на C++

Я понимаю, что до меня многие могли задать этот вопрос, но всё же: есть какой-либо движок, компилятор или что-то в этом роде для создания программ формата iOS? Просто много времени изучал C и C++, как раз для разработки под iOS, но тогда не подумал посмотреть, какие языки она поддерживает, т.к. где-то как-то слышал, что кто-то сделал программу на C++. Не очень хочется после этого верить, что разрабатывать можно только на Objective-C. В интернете пишут, что программа на C будет понятна компилятору на Objective-C, но моя не работает. Прошу помочь и отвечать по теме.
Ответ: Друзья,помогите решить задачу
Нужно найти количество пятерок в каждой строке в двумерном массиве.
Выручите,пожалуйста.
Вопрос: Ищу единомышленника по изучению Objective-c, программирования под iOS, iPhone

Уважаемые новички в программировании, сам являюсь таковым и поэтому предлагаю создать небольшую комманду для изучения указанных в теме топика технологий. За последние пару месяцев было перечитано несколько книг и куча страниц на developers.apple.com. Думаю что для пущей эффективности нужно изучать сие в компании других людей(одного человека), заинтересованных в познании яблочных технологий. Форум - оно конечно хорошо - но... по 2 дня ждать ответа - не айс. А так - можно делиться наработками, спашивать/объяснять. В итоге выигрыш обоюдный - тот кто объясняет сам значительно лучше усваивает материал.
Ответ: Я в деле skype - kolchin121
Вопрос: Доступные всем статичные объекты

Как в ios реализовать подобное? Например, в java выглядит так:
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
public class SomeClass{
    public static final int SOME_PARAM_1 = 0;
    public static final int SOME_PARAM_2 = 1;
}
 
//И дальше в любом месте в программе:
    int myParam = SomeClass.SOME_PARAM_1;
Есть ли что-то такое в objective-c? Или может там другими способами такое решается?

Добавлено через 4 часа 35 минут
Может не понятно объяснил - для примера, как решается ситуация, когда нужно послать в метод один из заранее определенных значений, день недели, к примеру? Причем чтобы эти параметры были доступны по всей программе, в любом классе. То есть, скажем, есть класс Calendar и у него метод setDayOfWeek, который принимает один из дней недели, а если параметр не соответствует дню недели - выбрасывает исключение.
Ответ: HellBoy4eG, ну здравствуйте, без инициализации... у синглтона уже есть инициализация...
Spelcrawler, так как Objective-C это Си в первую очередь, рассмотрите вариант использования extern в .h файле
Например так:
Код Objective-C
1
2
3
4
// .m file
NSString* const MyExternVar = @"MyExternVar";
// .h file
extern NSString* const MyExternVar;
Но если хочется сделать конкретно в классе - можете воспользоваться статичными методами, они объявляются через +
Код Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
@interface MyClass : NSObject
 
+ (NSString *)aClassMethod;
 
@end
 
@implementation MyClass : NSObject
 
+ (NSString *)aClassMethod {
    return @"TestString";
}
 
@end
Вопрос: Не получается передать результат парсинга в другой контроллер

Здравствуйте. Поясните почему возникает такая ситуация. У меня есть класс наследник NSOperation. В этом классе происходит парсинг xml после того как он отпарсит то результативный массив (массив словарей) должен отправляться в tableView. В методе main (класса парсинга), в которой и происходит отправка результата, но она не срабатывает если нету NSLog. То есть если я перед отправкой проверяю (чисто для себя) есть там данные или нет то массив отправляется, но если я этот NSLog уберу то отправки не происходит, принимающий массив пуст и как результат в TableView ничего нету. Я не могу понять как NSLog может влиять на отправку? В feedArray должен передаться appRecordList.

Код где я запускаю этот парсинг:
Код 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
-(void)startingParse: (NSData*)data  {
    self.queue = [[NSOperationQueue alloc]init];
    
    
    VRParser *parser = [[VRParser alloc]init];
    parser.dataXml = data;
    NSLog(@"data %@", data);
    __weak VRParser *weakParser = parser;
    
    parser.completionBlock = ^{
        if (weakParser.appRecordList) {
            dispatch_async(dispatch_get_main_queue(), ^{
                
               
                VRRootViewController *rootViewController = (VRRootViewController*)[(UINavigationController*)self.window.rootViewController topViewController];
                
                
                rootViewController.feedsArray = weakParser.appRecordList;
                [rootViewController.tableView reloadData];
                
                
                
                NSLog(@"/n/n/n/HELLLO/n/n/n/n");
                NSLog(@"\n\n\n------------------\n");
                NSLog(@"Parse rootViewController feed = %@", rootViewController.feedsArray);
                NSLog(@"\n\n\n--------\nParse feed = %@", weakParser.appRecordList);
            });
        }
        self.queue = nil;
        
    };
    [self.queue addOperation:parser];
}
А это код самого парсинга

Код 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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
//
//  VRParser.m
//  rssReader
//
//  Created by Admin on 06.01.15.
//  Copyright (c) 2015 admin. All rights reserved.
//
 
#import "VRParser.h"
 
@interface VRParser ()
{
    NSXMLParser* parser;
    NSMutableArray* feeds;
    NSMutableDictionary *item;
    NSMutableString* title;
    NSMutableString *pubDate;
    NSMutableString * author;
    NSMutableString *link;
    NSMutableString *description;
    NSString *element;
}
 
@end
 
 
 
@implementation VRParser
@synthesize feeds = _feeds;
-(void)main {
    _feeds = [[NSMutableArray alloc]init];
  //  NSURL *url = [NSURL URLWithString:
               //   @"http://rss.cbc.ca/lineup/topstories.xml"];
 
    
    parser = [[NSXMLParser alloc]initWithData:self.dataXml];
  
   
    [parser setDelegate:self];
    [parser setShouldResolveExternalEntities:NO];
    [parser parse];
    
    
    if (![self isCancelled])
    {
        // Set appRecordList to the result of our parsing
        self.appRecordList = self.feeds;
        NSLog(@"self.appRecordList %@",  self.appRecordList);
         }
 
    
    NSLog(@"VRParser  main");
}
 
 
#pragma mark - Parser
 
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
    element = elementName;
    
    NSLog(@"VRParser  didStartElement");
    
    if ([element isEqualToString:@"item"]) {
        item = [[NSMutableDictionary alloc]init];
        title = [[NSMutableString alloc]init];
        link = [[NSMutableString alloc]init];
        pubDate = [[NSMutableString alloc]init];
        author = [[NSMutableString alloc]init];
        description = [[NSMutableString alloc]init];
    }
}
 
 
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
{dispatch_sync(dispatch_get_main_queue(), ^{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Error. Site url is crash" message:[parseError localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    
    [alert show];
     });
        NSLog(@"error %@", parseError);
 
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if ([[alertView buttonTitleAtIndex:buttonIndex]isEqualToString:@"Repeat"]) {
        
        [self main];
       
    }
}
 
 
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    
    
    if ([elementName isEqualToString:@"item"]) {
        [item setObject:title forKey:@"title"];
        [item setObject:link forKey:@"link"];
        [item setObject:pubDate forKey:@"pubDate"];
        [item setObject:author forKey:@"author"];
        [item setObject:description forKey:@"description"];
        
        
        [_feeds addObject:[item copy]];
    }
}
 
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
    if ([element isEqualToString:@"title"]) {
        [title appendString:string];
    } else if ([element isEqualToString:@"link"]) {
        [link appendString:string];
    }
    
    else if ([element isEqualToString:@"pubDate"]) {
        [pubDate appendString:string];
    }
    else if ([element isEqualToString:@"author"]) {
        [author appendString:string];
    }
    else if ([element isEqualToString:@"description"]) {
        [description appendString:string];
    }
    
    
}
 
-(void)parserDidEndDocument:(NSXMLParser *)parser {
 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
 
    
    
}
 
 
 
 
@end
Ответ: Вот, пожалуйста
Код Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//
//  VRParser.h
//  rssReader
//
//  Created by Admin on 06.01.15.
//  Copyright (c) 2015 admin. All rights reserved.
//
 
#import <Foundation/Foundation.h>
 
@interface VRParser : NSOperation <NSXMLParserDelegate, UIAlertViewDelegate>
@property (strong, nonatomic) NSMutableArray* feeds;
 
 
@property (strong, nonatomic)NSArray* appRecordList;
 
@property (strong,nonatomic)NSData *dataXml;
 
@end