【bolg目标】

bolg仅仅针对<Cocoa原理指南>书中代码进行本地测试和文档学习,书中理论不进行摘要

个人觉得此书值得推荐阅读,从整体上学习Cocoa

【实践环境】
Mac 10.6
XCode4

【正文】
Pdf版

Cocoa整体纵览图,在书中页码:
Foundation
  P15
  P16
  P17
Application Kit
  P20
  P21

/**************************************************/
下面分析下P27书中代码

#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSArray *args = [[NSProcessInfo processInfo] arguments];
    NSCountedSet *cset = [[NSCountedSet alloc] initWithArray:args];
    NSArray *sorted_args = [[cset allObjects]
                            sortedArrayUsingSelector:@selector(compare:)];
    NSEnumerator *enm = [sorted_args objectEnumerator];
    id word;
    while (word = [enm nextObject]) {
        printf("%s\n", [word UTF8String]);
    }
   
    [cset release];
    [pool release];
    return 0;
}

比对资料学习,如下
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

NSProcessInfo

此类是对当前进程信息的访问

The NSProcessInfo class provides methods to access information about the current process. Each process has a single, shared NSProcessInfo object, known as process information

agent.

Getting the Process Information Agent
+ processInfo
Accessing Process Information
– arguments
– environment
– processIdentifier
– globallyUniqueString
– processName
– setProcessName:
Sudden Application Termination
– disableSuddenTermination
– enableSuddenTermination
Getting Host Information
– hostName
– operatingSystem
– operatingSystemName
– operatingSystemVersionString
Getting Computer Information
– physicalMemory
– processorCount
– activeProcessorCount
– systemUptime

关于上面罗列的,一目了然的明白这些方法的目的

本例使用processInfo和arguments

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

NSCountedSet 继承NSMutableSet : NSSet : NSObject

The NSCountedSet class declares the programmatic interface to a mutable, unordered collection of indistinct objects. A counted set is also known as a bag.

在本例,此类用于统计重复输入对象,在后续的调整代码有这么一句输出
NSLog(@"%@,%lu" ,item ,[cset countForObject:item]);

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

sortedArrayUsingSelector:属于NSArray类的,用于数组排序
@selector(compare:),通过文档,发现其中compare:这个函数来自NSNumber类{?这个是现行理解},其原型:
- (NSComparisonResult)compare:(NSNumber *)aNumber

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

按照书中描述,
SimpleCocoaTool a z c a l q m z
a
c
l
m
q
z

实际在调试中发现出现数据类似
/Users/...../SimpleCocoaTool
a
c
l
m
q
z

比书中所写代码多一个行输出

至于为什么会这样,要么书中作者截获,要么Xcode版本问题
下面在XCode4下进行下面改进
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

为了在调试中实践,最后结果类似书中类似输出,改进原有代码:
int main (int argc, const char * argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
   
    NSMutableArray *args = [[NSMutableArray alloc] initWithArray:[[NSProcessInfo processInfo] arguments]];//把NSArray换成NSMutableArray
   
    [args removeObjectAtIndex:0];//移出第一个参数
   
    NSCountedSet *cset = [[NSCountedSet alloc] initWithArray:args];
   
    for(id item in cset)
    {
        NSLog(@"%@,%lu" ,item ,[cset countForObject:item]);
    }
   
    NSArray *sorted_args = [[cset allObjects]
                            sortedArrayUsingSelector:@selector(compare:)];
    NSEnumerator *enm = [sorted_args objectEnumerator];
    id word;
    while (word = [enm nextObject]) {
        printf("%s\n", [word UTF8String]);
    }
   
    for(id item in sorted_args)
    {
        NSLog(@"for %@" ,item);
    }
   
    [cset release];
    [pool release];
   
    return 0;
}

现在测试

SimpleCocoaTool a z c a l q m z
a
c
l
m
q
z
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

转载于:https://www.cnblogs.com/GoGoagg/archive/2011/08/24/2152032.html

Cocoa原理指南-学习和实践1相关推荐

  1. 【编译原理】编译原理系统学习与实践系列文章汇总目录(持续更新中)

    本文属于「编译原理」系列文章的汇总目录,这一系列正式开始于2021/10/22,着重于「编译原理的学习与实践」.众所周知,编译原理难学难精,因此本系列将至少持续到作者本人「精通编译原理」为止(笑).由 ...

  2. python原理书籍_python书籍推荐:《深入浅出深度学习:原理剖析与Python实践》

    在过去的这十年,深度学习已经席卷了整个科技界和工业界,2016年谷歌阿尔法狗打败围棋世界冠军李世石,更是使其成为备受瞩目的技术焦点. 今日,小编就为大家推荐一本能让初学者和"老司机" ...

  3. 基于设计原理与理念和实践的ElasticSearch学习、ELK日志收集、网盘搜索引擎

    目录 基于设计原理与理念和实践的ElasticSearch学习 一.ES基础入门 ElasticSearch是什么? ES优点: ES缺点: ElasticSearch应用场景 ElasticSear ...

  4. 【数据库系统】数据库系统学习与实践系列文章汇总目录(持续更新中)

    本文属于「数据库系统」系列文章的汇总目录,这一系列着重于「数据库系统知识的学习与实践」.由于文章内容随时可能发生更新变动,欢迎关注和收藏本文以作备忘.需要特别说明的是,为了透彻理解和全面掌握数据库系统 ...

  5. 八大深度学习最佳实践

    翻译 | AI科技大本营 参与 | 刘畅 [AI 科技大本营导读] 2017年,许多的人工智能算法得到了实践和应用.名博Hack Noon作者 Brian Muhia 认为想要玩转人工智能,不仅要拥有 ...

  6. 【PWA学习与实践】(3) 让你的WebApp离线可用

    <PWA学习与实践>系列文章已整理至gitbook - PWA学习手册,文字内容已同步至learning-pwa-ebook.转载请注明作者与出处. 本文是<PWA学习与实践> ...

  7. SVM-支持向量机原理详解与实践之一

    SVM-支持向量机原理详解与实践 前言 去年由于工作项目的需要实际运用到了SVM和ANN算法,也就是支持向量机和人工神经网络算法,主要是实现项目中的实时采集图片(工业高速摄像头采集)的图像识别的这一部 ...

  8. 人工神经网络理论、设计及应用_TensorFlow深度学习应用实践:教你如何掌握深度学习模型及应用...

    前言 通过TensorFlow图像处理,全面掌握深度学习模型及应用. 全面深入讲解反馈神经网络和卷积神经网络理论体系. 结合深度学习实际案例的实现,掌握TensorFlow程序设计方法和技巧. 着重深 ...

  9. 深度学习笔记第二门课 改善深层神经网络 第一周:深度学习的实践层面

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

最新文章

  1. JAVA多线程和并发基础面试问答
  2. Xamarin Android组件篇教程RecylerView动画组件RecylerViewAnimators(1)
  3. 【多线程】ThreadPoolExecutor 类的使用详解
  4. OpenGL text rendering文字渲染的实例
  5. 怎么在php项目安装tp5框架,框架安装与基本配置
  6. steam夏日促销用Python爬取排行榜上的游戏打折信息
  7. FoveaBox:目标检测新纪元,无Anchor时代来临!
  8. 从Powershell ***脚本学到的如何执行后台runspace~
  9. python中xlrd写操作_Python读写操作Excel模块_xlrd_xlwt_xlutils
  10. comet4j简单应用、文档教程
  11. steam授权_验号机器人正式上线,支持检验csgo账号、steam账号信息
  12. Xcode5 创建模板和UIView 关联XIB
  13. Unity3D Delegate
  14. 关于Echarts南丁格尔玫瑰图的部分解释
  15. linux的sssd服务,系统安全服务守护进程SSSD
  16. Python爬虫知网
  17. 人民币小写转大写算法
  18. FreeRTOS内核——任务与任务切换
  19. PostgreSQL 不在使用tigger或rule来模拟 SSQLSERVER timestamp 行变化版本管理
  20. 微信清除缓存的两种方法

热门文章

  1. 使用 Spot 低成本运行 Job 任务
  2. Nacos Go 微服务生态系列(一)| Dubbo-go 云原生核心引擎探索
  3. comsol稀物质传递_印刷指南丨印刷油墨传递的影响因素?
  4. mysql悲观锁 更新_MySQL学习笔记(四)悲观锁 for update
  5. java ajax post_2、Ajax与Java通过POST方式交互
  6. springboot 拦截器 日志_跟武哥一起学习Spring Boot,一份全面详细的学习教程
  7. dsp广告和信息流广告区别_一文搞懂DSP-蘑菇街DSP广告实践
  8. 【完结】有三AI阿里云的深度学习基础课程暂时完结,欢迎扩散学习
  9. 中国电梯行业运行前景与品牌竞争分析报告2022版
  10. 全球及中国自媒体行业营销模式及应用规模前景分析报告2021-2027年