热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iPhonesdk4编程

繁體中文English用户名:密码:忘记密码?登陆注册首页|新闻|交流|问吧|文档|手册|下载|博客文档问吧交流PHP函数下载全站搜索标题全文热门搜索域名注册虚拟主机-我是站长网,
繁體中文 English 用户名: 密码: 忘记密码? 登陆 注册

首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

文档问吧交流PHP函数下载全站搜索

标题 全文  热门搜索 域名注册 虚拟主机

-
  • 我是站长网,站长好帮手
  • 网站征服者,建站好去处
  • favicon制作,favicon.ico在线制作
  • 联系我们获取你的广告链接>>>

iPhone sdk4 编程
作者: sxcong  时间: 2010-08-05
一 安装
1 下载安装vmware7
2 修改BIOS设置,支持VT.(一般,CPU要E6400以上,主板有虚拟化选项)
3 下载安装Mac OS 10.6.2 (也可以直接下载已经安装好的虚拟机文件,如easystudio的)
4 在mac os上配置共享,支持ftp,ssh访问。然后用pytty测试一下。
5 去苹果网站,注册用户,登录,然后下载iPhone sdk4,2G多.非常难下,在本机上用迅雷等工具都不行,最后直接用firefox打开链接下载,竟然完整下载成功。
6 用ftp或sftp把dmg传到mac虚拟机止,双击安装,注意记住安装路经。
7 安装结束后,在安装的硬盘下面,Developer/Applications下有Xcode,双击运行,新建项目,随便选一个类型(教程上比较多的是View),然后选Build and run,编译运行,会出现iPhone模拟器,上面运行一个空画面的程序,致此,安装成功。

二 开发
1 UI方面,看起来和VB6最象。如果做过MFC,QT,Delphi,BCB等编程,理解起来很容易。主要就是利用SDK提供的类库操作控件写程序。只要注意缺省环境是Object C。
2 线程
 sdk中有封装好的线程类,不过我感觉,如果是Linux或FreeBSD编程很熟悉的,直接用pthread可能更好。
3 socket编程
  同上,虽然有封装好的类库,但BSD socket用起来真方便,Linux上的程序基本可以直接拿过来使用。
4 混合编程
  从艺术角度上来看,Object C和iPhone SDK完美结合,做出的产品漂亮,写的代码也整齐。不过,我的意见是实用为王。如果原来在Linux或FreeBSD下有代码积累的话,也不用重写了,仔细检查一下内存等占用情 况,直接拿过来就好了。反正苹果的编译器完美支持Ojbect C和标准C的语法,只要自己分成不同的文档,或不同的目录结构就行了。
比如,以网络功能为例,下载网页可以用iPhone的SDK:
NSData *dataReply = [NSURLConnection sendSynchronousRequest:urlRequest  returningResponse:&response  error:&error];

通过socket接收和发送文件,因为服务器是Linux,客户端包括Linux,Windows,代码最好保持一致,就使用bsd socket,如:

    struct sockaddr_in soapAddr; 
    //1 创建soap socket
    if ((soap_sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    {
        perror("create soap error");
        return -1;
    }
    else
    {
        printf("create soap ok\n");
    }

    //2 连接soap server
    memset(&soapAddr,0,sizeof(soapAddr)); 
    char* szHostAddr = "xxx.xxx.com";
       
    soapAddr.sin_family = AF_INET;  
    soapAddr.sin_addr.s_addr = inet_addr(szHostAddr);
   
    if (INADDR_NONE == soapAddr.sin_addr.s_addr)  
    {  
        struct hostent *lphost = gethostbyname(szHostAddr);  
        if (lphost != NULL)  
            soapAddr.sin_addr.s_addr = ((struct in_addr*)lphost->h_addr)->s_addr;  
        else  
        {  
            return -1;  
        }  
    }  
    soapAddr.sin_port = htons(7070);//IM port
   
    if (connect(soap_sock, (struct sockaddr *)&soapAddr, sizeof(soapAddr)) <0 )  
    { 
        printf("connect error\n");
        return -2;  
    } 
    else
    {
        printf("connect  ok\n");
    }

//创建接收线程
 int res;
 pthread_t sock_thread;
 res&#61;pthread_create(&sock_thread, NULL, sock_recv, NULL);
 线程内循环recv
//发送数据
 send(fd, buffer, left_length, 0);

这些代码&#xff0c;在Linux&#xff0c;Windows的VC&#43;&#43;都正常运行(VC使用pthread也有可用的开源库)。移到iPhone上同样可以运行&#xff0c;所以&#xff0c;也就不必用iPhone SDK封装的NSStream,NFSocket等类库了。

当然&#xff0c;如果程序只在Mac环境下运行&#xff0c;暂时没有其他平台的使用&#xff0c;那还是用SDK最安全。

虽然号称是iPhone开发&#xff0c;但实际上只做了一个简单的界面&#xff0c;只用了短短几天时间就把Linux上的sip和IM(没用到任何臃肿的开源库&#xff0c;自己用C语言实现的最常用功能的协议栈)等程序移植到iPhone上&#xff0c;做成了一个简单的voip软电话(语音视频的播放肯定是有SDK的&#xff0c;但网络传输&#xff0c;封包组包完全不用重写&#xff0c;直接搬过来)。
所以&#xff0c;iPhone开发&#xff0c;实际上就是c语言调用iPhone sdk开发。如果C语言掌握熟练&#xff0c;对Linux或FreeBSD系统也熟悉&#xff0c;学起来也很快。

三 注意点
1 iPhone 4 SDK和Xcode环境有些变化&#xff0c;网上很多教程(很多网站互相抄&#xff0c;内容严重雷同&#xff0c;错误也多。建议直接看Apple文档)有些部分已经不能用&#xff0c;比如outlet和action的添加。
2 写网络程序时注意网络字节序&#xff0c;ntohl, htonl等转换是必须的。
3 涉及到字符串建议都采用unicode。
4 资源有限&#xff0c;内存需要节省使用&#xff0c;栈空间更要注意。还好是用C开发&#xff0c;自己可以控制。如果是JAVA&#xff0c;不深入研究的话&#xff0c;真不知道数据和堆栈怎么使用的&#xff0c;当然程序员也不需要关心&#xff0c;大不了直接让厂家多放点内存就行了。
5 虚拟机开发不太方便&#xff0c;如果准备长期做iPhone项目&#xff0c;建议采用iMac一体机做开发&#xff0c;mac笔记本屏幕太小&#xff0c;iMac可以22寸的&#xff0c;而且是4&#xff1a;3。(顺便严重鄙视一下宽屏显示器&#xff0c;本质就是面板缩水再骗用户)。





-



推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 如何在文本中运行Java程序
    本文介绍了在文本中运行Java程序的步骤,包括创建文本文档、修改后缀、打开DOS命令窗口、编译和运行程序。通过这些步骤,可以在文本中成功运行Java程序并输出结果。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
author-avatar
无语我去_296
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有