objective-c - 求教iOS开发知识
黄舟
黄舟 2017-04-17 17:30:24
0
4
430

做iPhone/iPad需要哪些知识??

洒家只知道要会 Objective-c,
熟悉 iOS SDK
工具是 xcode

基础的 数据结构、算法、多线程、Socket、XML ,这些应该也是要掌握的,
还有些啥?

或者,能不能细化一下Objective-c的重要技术点?谢谢。。

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(4)
刘奇

En tant que développeur passé à mi-chemin au développement iOS, à en juger par mes deux mois d'expérience en développement, Objective-C n'est pas difficile du tout. Le programme que j'ai développé a subi les changements suivants, et j'en ai également profité pour résumer les gains et les pertes

Le bonjour le monde le plus attardé

Créez un nouveau projet à partir de xcode, puis ouvrez l'éditeur de fenêtres (Interface Builder, IB en abrégé), faites glisser un composant UILabel, écrivez "Hello World", et vous avez terminé.

Comprendre la composition du code

Bien que son nom soit "objective-c", il semble être complètement différent du langage C que j'ai écrit auparavant. Il regorge d'innombrables règles tacites qui déroutent les novices.

  1. Pourquoi utiliser #import au lieu de #include ?
  2. Qu'est-ce que @property ? Quelles réactions chimiques étranges se produiront avec le (strong, nonatomic) entre parenthèses ? Pourquoi dois-je ajouter @interface après avoir déclaré les attributs dans @property ? @synthesize
Cette étape se concentre essentiellement sur de nombreuses questions de novices. Heureusement, les réponses à ces questions sont faciles à trouver en ligne, et si vous avez d'autres bases linguistiques, il sera facile de comprendre ces grammaires.

Le code que j'ai écrit à ce stade est fondamentalement terrible. Tout le code est placé dans un contrôleur. L'un est parce que je suis paresseux, et l'autre est parce que je ne maîtrise pas le style de codage dans le monde du développement objective-c, alors n’utilisez tout simplement pas de style. Votre code peut être rempli avec

ou IBOutlet. IBAction

Mais tant que votre code fonctionne, cela en vaut la peine.

Un premier aperçu de l'essence

L'une des essences du framework cacao est

, qui est traduit en chinois par mode « délégué » (ma propre traduction littérale est mode « agent »). Bien que ce modèle ne soit pas original à Cocoa, il constitue également l’une de ses meilleures utilisations. Le mode delegate résout le problème d'interaction entre delegate et controller. view

Quand j'écris du code, je trouve souvent que tant que

, beaucoup de choses merveilleuses se produiront. De plus, vous constaterez que ces composants de base mentionnés par iOS ne peuvent plus répondre à vos besoins d'interaction. À ce stade, vous devrez peut-être commencer à étendre certains de ses composants de base. seDelegate

Il est très simple d'étendre ses composants de base, et il existe de nombreuses interfaces qui nous sont réservées dans le sdk

. Habituellement, à ce moment-là, lorsque vous regardez le code laid que vous avez écrit auparavant, vous ne pouvez pas vous empêcher de commencer à le refactoriser, alors allez-y et refactorisez-le. override

Facile à utiliser

En fait, après avoir compris certaines des règles cachées du monde

, en plus de maîtriser son API, il est fondamentalement devenu un langage outil ordinaire. objective-c

Mais il convient de noter que ARC, le comptage automatique de références, a été introduit dans xcode 4 et versions ultérieures, et il est activé par défaut. Cela pourrait vous causer des ennuis. De nombreux débutants craignent que laisser le système gérer la mémoire entraîne un gaspillage de mémoire. En fait, après avoir compris son principe, ils constatent que sa mise en œuvre est très simple. En fait, lorsque personne ne référence un objet, le système le supprimera automatiquement. . Le laisser au système peut également éviter la formation de fragmentation de la mémoire, mais si vous devez fréquemment lire et écrire de la mémoire dans une zone mémoire, telle qu'une file d'attente de messages implémentée par vous-même, il est recommandé de l'implémenter vous-même via release. struct

Mais si vous définissez une telle structure

typedef struct _Test {

    NSString *name;

} Test;
Le compilateur vous dira impitoyablement que les objets objective-c ne peuvent pas être référencés dans struct Pourquoi ? Parce qu'ARC ne peut pas contrôler le nombre de références dans la structure. Mais que se passe-t-il si vous devez référencer un objet dans la structure ? Vous pouvez utiliser

pour enregistrer un pointeur void *

typedef struct _Test {
    void *namePtr;
} Test;

// malloc的指针也不会被arc, 注意自己释放
Test test = (Test *)malloc(sizeof(Test));
test.namePtr = (__bridge void *)[NSString stringWithString:@"Hello"];
Mais il y a un problème. Dans le code ci-dessus,

n'est qu'une variable temporaire Bien qu'elle soit pointée par le pointeur de struct, comme mentionné précédemment, cela ne provoquera pas le décompte de références de [NSString stringWithString:@"Hello"]. ARC

Cela signifie que ARC pensera que personne ne fait référence à cette variable. Si rien d'autre ne se produit, une fois ce code exécuté, cette mémoire sera récupérée par le système. Si vous appelez à nouveau la mémoire pointée par ce pointeur, vous n'obtiendrez qu'une erreur

. EXC_BAD_ACCESS

La solution est en fait très simple. On peut forcer ARC à compter, par exemple, définir une variable dans le

courant pour qu'elle pointe vers cette chaîne afin qu'elle ne soit pas libérée @interface

@interface TestObj : NSObject {
    NSString *name;
}

- (void)initName
{
    name = [NSString stringWithString:@"Hello"];    // 强制引用
    Test test = (Test *)malloc(sizeof(Test));
    test.namePtr = (__bridge void *)name;
}
OK, c'est un peu brouillon après avoir autant parlé, et finalement je me suis plaint d'ARC. La conclusion finale est qu’il est rapide de démarrer, mais qu’il faut aussi étudier par soi-même pour bien l’apprendre.

阿神

Le premier niveau : la syntaxe objective-c peut être pratiquée avec succès en trois jours
Deuxième couche : interface utilisateur des travailleurs migrants : utilisation de UIView, UILabel, UIImageView, UITableView, UINavigationController et UITabBarViewController. La pratique prend un à deux mois selon vos qualifications.
La troisième couche : diverses API fonctionnelles : requête réseau, persistance, carnet d'adresses, GPS, API email et diverses API. Six mois
La quatrième couche : avancement de l'interface utilisateur : écran rotatif, animation principale, vue de dessin personnalisée, contexte de dessin, etc. Six mois
Niveau 5 : Compétences avancées : runtime, cocos, OpenGLES, etc. La pratique n'est pas encore terminée et la date requise n'est pas encore connue.

PHPzhong

Suggestion 1, ne pas étudier systématiquement
Suggestion 2, commencez par écrire Hello World, écrivez les applications une par une et apprenez ce que vous utilisez
Suggestion 3, aucun livre sur le marché n'est fiable
Suggestion 4, lisez les documents officiels et l'exemple de code

黄舟

Une photo vous le dira ! Merci de lire l'article : http://www.henishuo.com/ios-study-route/

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal