Objective-C 基础语法详解

雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/368

如果想从事iphone开发的话 Objective-C 这门语言就不得不学会 我们都知道C语言是没有面向对象的 而Object-C 则是ANSI C 的一个严格超集 它是具有面向对象的特性的 由于IPHONE 的成功 让这门语言现在非常的火热 今天笔者为大家介绍一下在xcode中 使用Objective-C 的基本语法。

1.打开mac系统中强大的Xcode软件 单击Create a new Xcode project  创建一个Xcode项目。

2. 选择“View-based Application” 因为只是介绍基本语法 所以 “View-based Application” 已经够用了 。 选择完后  点击Next 。

3.输入相应的信息后点击Next。



Product Name: 指产品名称 ,可以随意命名。

Company Identifier: 公司标识符,一般命名规则为 “com.公司名”

Bundle Identifier: 指包标识符,用于唯一标识应用程序,默认会根据公司标识符和产品名来组合生成

Device Family: 指该应用支持的设备类型,共三个选项:iPhone、iPad、Universal(即iPhone、iPad通用)

Include Unite Tests: 是否包含单元测试代码模板,如果勾选,Xcode会帮助生成单元测试代码模板

这样 我们的第一个项目就创建好了,接下来开始为大家介绍 Objective-C 的语法

在项目视图中 打开 helloWorldViewController.m文件 找到 - (void)viewDidLoad 方法 (这个方法每次启动程序都会调用 )

学过C++的朋友应该都知道 新写一个类会有 一个.h 声明类的变量 方法等 .cpp 用来实现方法  Objective-C   则也类似C++  .h 声明类的变量 方法  .m 用来实现方法

在c语言中 我们在控制台输出信息是用printf()   Java语言则是 System.out.println() 而Objective-C  则是用 NSLog();

打开控制台的快捷键为 command + shift + R

  1. //
  2. //  helloWorldViewController.m
  3. //  helloWorld
  4. //
  5. //  Created by  宣雨松 on 11-7-4.
  6. //  Copyright 2011年 __MyCompanyName__. All rights reserved.
  7. //
  8. #import "helloWorldViewController.h"
  9. #import "MyClass.h"//导入新写的类
  10. @implementation helloWorldViewController
  11. - (void)dealloc
  12. {
  13. [super dealloc];
  14. }
  15. - (void)didReceiveMemoryWarning
  16. {
  17. // Releases the view if it doesn't have a superview.
  18. [super didReceiveMemoryWarning];
  19. // Release any cached data, images, etc that aren't in use.
  20. }
  21. #pragma mark - View lifecycle
  22. // Implement viewDidLoad to do additional setup after loading the view, typically from a
  23. nib.
  24. - (void)viewDidLoad
  25. {
  26. [super viewDidLoad];
  27. //打印一个字符串
  28. NSLog(@"only log hello world");
  29. //字符串相加
  30. NSString *str;
  31. NSString *str1 = @"plusA ";
  32. NSString *str2 = @"+";
  33. NSString *str3 = @"plusB";
  34. // 把str1 str2 str3 相加后赋值给str %@ 表示是一个对象 这里也可以用 %d  %s 在这里就不一一举例了。
  35. str = [NSString stringWithFormat:@"%@ %@ %@",str1,str2,str3];
  36. //打印出str
  37. NSLog(@"string plus %@",str);
  38. //self 好比C++ 或者 java 语言中的 this 指针 指向本类 这里调用了本类的 putString方法 将字符串"pass string"作为参数传递了进去
  39. [self putString:@"pass string"];
  40. //在内存中new了一个MyClass的对象  alloc是在内存中 分配内存  init 则是初始化 这样写 属于规定写法
  41. MyClass * myclass = [[MyClass alloc] init];
  42. // 用myclass指针调用 类中putclass方法 将字符串 "pass class string"作为参数传递进去
  43. [myclass putclass:@"pass class string"];
  44. //调用类中静态方法 将字符串"static pass class string "作为参数传递进去
  45. [MyClass staticPutClass:@"static pass class string"];
  46. }
  47. - (void)viewDidUnload
  48. {
  49. [super viewDidUnload];
  50. // Release any retained subviews of the main view.
  51. // e.g. self.myOutlet = nil;
  52. }
  53. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  54. {
  55. // Return YES for supported orientations
  56. return (interfaceOrientation == UIInterfaceOrientationPortrait);
  57. }
  58. //自己写的类方法输出字符串
  59. -(void)putString:(NSString *)str
  60. {
  61. NSLog(@"%@",str);
  62. }
  63. @end

//这个类的声明

  1. #import <UIKit/UIKit.h>
  2. @interface helloWorldViewController : UIViewController {
  3. }
  4. -(void) putString:(NSString*)str;
  5. @end

MyClass类的实现

  1. #import "MyClass.h"
  2. @implementation MyClass
  3. //方法前是-号的说明这是一个实力方法 必需本类new过才能调用
  4. -(void)putclass:(NSString *)str
  5. {
  6. NSLog(@"%@",str);
  7. }
  8. //方法前是+号的说明这是一个类方法 这种方法无权访问实例变量
  9. //这里声明了一个静态方法 无需本类new过也可以调用
  10. +(void)staticPutClass:(NSString *)str{
  11. NSLog(@"%@",str);
  12. }
  13. @end

MyClass类的声明

  1. #import <Foundation/Foundation.h>
  2. @interface MyClass :NSObject{
  3. }
  4. -(void) putclass : (NSString *) str;
  5. +(void) staticPutClass :(NSString *) str;
  6. @end

这样Objective-C 基本的语法就给大家介绍完了, 希望有兴趣的朋友可以和我一起讨论 我们可以一起进步。

Objective-C 基础语法log打印那些事儿(一)的更多相关文章

  1. javascript中正则表达式的基础语法

    × 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...

  2. Objective-C基础语法快速入门

    Objective-C基础语法快速入门 2010-11-04 16:32 折酷吧 zheku8 字号:T | T 假如我们对面向对象的思维已经C语言都很熟悉的话,对于我们学习Objective-C将会 ...

  3. Python学习的个人笔记(基础语法)

    Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...

  4. JavaScript 正则表达式基础语法

    前言 正则表达式在人们的印象中可能是一堆无法理解的字符,但就是这些符号却实现了字符串的高效操作.通常的情况是,问题本身并不复杂,但没有正则表达式就成了大问题.javascript中的正则表达式作为相当 ...

  5. python基础语法及知识点总结

    本文转载于星过无痕的博客http://www.cnblogs.com/linxiangpeng/p/6403991.html 在此表达对原创作者的感激之情,多谢星过无痕的分享!谢谢! Python学习 ...

  6. 【Scala学习之一】 Scala基础语法

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

  7. Unit04: JavaScript 概述 、 JavaScript 基础语法 、 流程控制

    Unit04: JavaScript 概述 . JavaScript 基础语法 . 流程控制 my.js function f3() { alert("唐胜伟"); } demo1 ...

  8. 1.scala基础语法总结

    Scala基础语法总结:Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的.如果一行里写多个语句那么分号是需要的 val s = "菜鸟教程"; pr ...

  9. Ajax基础知识 浅析(含php基础语法知识)

    1.php基础语法    后缀名为.php的文件 (1) echo   向页面中输入字符串  <?php    所有php相关代码都要写在<?php ?>这个标签之中 echo &q ...

随机推荐

  1. Agilent RF fundamentals (3)- TX and RX

    1Create carrier:谐振器,如433.92Mhz LC谐振 (频偏控制) 2Add data to carrier 加载数据 3Amplify to broadcast :放大器,如NPN ...

  2. Ganymed实现基本的自动化部署API

    Ganymed SSH-2 for Java是一个纯Java实现的SHH2库,官网为http://www.ganymed.ethz.ch/ssh2/,最新的更新时间为2006年10月,在用之前,请仔细 ...

  3. [置顶] Android App引导页这些坑你自己犯过吗?

    场景:测试机:华为荣耀6x 今天我自己掉入一个很蠢蠢的坑,一个引导页搞了20多分钟,不管我怎么测试用真机还是模拟器都无法运行,但是我写的demo完全没问题,好无语,我都怀疑我是不是搞android,我 ...

  4. 5.linux目录结构介绍

    目录: 1.linux系统的目录结构特点?为何会形成这样的目录结构? 2.基本目录内容详解! 3.重要目录详解! 1.linux系统的目录结构特点? A.Linux系统的目录结构是一棵倒挂的大树,”/ ...

  5. Linux使用lrzsz上传下载文件

    1.当然是要安装lrzsz这个程序 yum -y install lrzsz 2.该程序的使用 //下载文件 sz filepath.ext//文件会默认下载到系统的Downloads目录 //上传文 ...

  6. LINUX (centos)设置IP地址,网关,DNS

    首先:备份原始配置文件: [logonmy@logon ~]$ cd /etc/sysconfig/network-scripts/ [logon@logon network-scripts]$ pw ...

  7. 【英语】Bingo口语笔记(81) - wear系列

  8. 【解题报告】[动态规划]RQNOJ PID2 / 开心的金明

    原题地址:http://www.rqnoj.cn/problem/2 解题思路:背包问题. 状态转移方程:DP[i][j]=max(DP[i-v[j]][j-1]+p[j]*v[j],DP[i][j- ...

  9. HDU - 4333 :Revolving Digits (扩展KMP经典题,问旋转后有多少个不同的数字小于它本身,等于它本身,大于它本身。)

    One day Silence is interested in revolving the digits of a positive integer. In the revolving operat ...

  10. N位N进制里有多少个N

    32位二进制里有多少个1 https://blog.csdn.net/zhangsj1007/article/details/81411063 有这样一道计算机问题"32位二进制里面有多少个 ...