当前位置:  编程技术>移动开发
本页文章导读:
    ▪3-种、对象和方法        3-类、对象和方法 前两章参考: 1-引言 2-Objective-C 编程 今天把第三章过了一下,本章简单的把Objective-C的面向对象介绍了一下。 主要关注Objective-C定义类相关的语法,面向对象方面的和其.........
    ▪ 耿老师讲 vi编辑器的应用        耿老师讲 vi编辑器的使用vi编辑器的使用 1.VI(visual interface)文本编辑器 2.系统默认安装好的(精简) 3.启动vi:直接在命令行输入vi即可,在哪个目录下启动,默认保存在哪个目录下 4.vi启动.........
    ▪ 座标地址互找       坐标地址互找 Geocoding API 1.什么是Geocoding? 2.Geocoding API有哪些功能? 3.使用限制 4.如何使用 5.服务地址 6.接口参数 7.返回数据说明 8.接口示例 什么是Geocoding? Geocoding API是一个供程序员.........

[1]3-种、对象和方法
    来源: 互联网  发布时间: 2014-02-18
3-类、对象和方法

前两章参考:

1-引言

2-Objective-C 编程


今天把第三章过了一下,本章简单的把Objective-C的面向对象介绍了一下。

主要关注Objective-C定义类相关的语法,面向对象方面的和其它语言差不多。比较接近C++。


对象就是一个物件。面向对象的程序设计可以看成一个物件和你想对它做的事情。

对象(名词)----》做(动词),先定义类(Class),再定义方法(Method)。

C语言是典型的面向过程性语言。

在C语言中,通常是先考虑要做什么,然后才关注对象,这几乎总是与面向对象的思考过程相反。

做(动词)-----》对象(名词),先定义函数(Function),再定义模块(Module)。

我这里写上英文是因为,只有那个英文才能准确表达它的含义。


类的独特存在就是一个实例,对实例执行的操作称为方法。在某些情况下,方法可以应用于类的实例或类本身。

对象使用方法可以影响对象的状态。

关键概念:对象是类的独特表示,每个对象都包含一些通常对该对象来说是私有的信息(数据)。方法提供访问和改变这些数据的手段。


Objective-C采用特定的语法对类和实例应用方法:

[ ClassOrInstance method];


请求一个类或实例来执行某个操作时,就是向它发送一条消息,消息的接收者称为Receiver。所以,可以用另外一种方式描述:

[ receiver message];


这里我要说两句,Objective-C的Method操作执行,一种理解是发送消息,另外一种是方法调用。这个无所谓的。准确额是第一种啊。


程序在逻辑上分为下面3个部分:

@interface

@implementation

program


@interface部分用于描述类和类的方法;

@implementation部分用于描述数据(类对象的实例变量存储的数据),并实现在接口中声明方法的实际代码;

program部分的程序代码实现了程序的预期目的。


@interface部分一般格式如下:

@interface NewClassName: ParentClassName

propertyAndMethodDeclarations;

@end


按照约定,类名以大写字母开头。实例变量、对象以及方法的名称,通常以小写字母开头。确定名称时,要遵循找到能反映变量或对象使用意图的名称。程序具有更强的自解释性(Self-explanatory)

制定名称的规则相当简单:名称必须以字母或下划线(_)开头,之后可以使任何大小写字母、下划线或者数字的组合。另外像$空格等都是非法,记住不能数字开头、不能使用保留字。


再次强调,Objective-C是大小写敏感的。sum和Sum是两个东西。

类或实例方法,开头为负号(-)表示实例方法,正号(+)表示类方法。

返回类型放在开头的负号或正号之后的圆括号中。有参数时,在方法名后加冒号(:),再加上参数类型和参数名。具体的如下例所示:

-(int) currentAge;

-(void) print;

-(void) setNumber: (int) n;


@implementation部分的一般格式如下:

@inplementation NewClassName

{

memberDeclarations;

}

methodDefinitions;

@end

需要注意的是:使用@synthesize指令能让编译器自动为你生成一些方法。


alloc是allocate的缩写。如果向某个类发送alloc消息,便获得该类的新实例。这个alloc方法继承自父类。alloc方法保证对象的所有实例都变成初始状态。当然想要适当的方法时,必须重新初始化,调用init方法。经常地情况是把alloc和init合在一起,或者直接使用new方法。例如:

Fraction *myFraction;

myFraction = [Fraction alloc];//类方法

myFraction = [myFraction init];//实例方法


Fraction *myFraction = [[Fraction alloc] init];//二合一


Fraction *myFraction = [Fraction new];//类方法,new包含alloc和init


记住,方法执行的上下文环境就是接收到消息的对象。

取值方法(get)和赋值方法统(set)称为访问方法(accessor)。


//

//  main.m

//  3_2_class_object_method

//

//  Created by forlong401 on 12-12-21.

//  Copyright (c) 2012年 forlong401. All rights reserved.

//


#import <Foundation/Foundation.h>


//-------- @interface section ----------

@interface Fraction: NSObject

-(void) print;

-(void) setNumerator: (int) n;

-(void) setDenominator: (int) d;

@end


//-------- @implementation section ----------

@implementation Fraction

{

    int numerator;

    int denominator;

}

-(void) print

{

    NSLog(@"%i/%i", numerator, denominator);

}

-(void) setNumerator:(int)n

{

    numerator = n;

}

-(void) setDenominator:(int)d

{

    denominator = d;

}

@end


//-------- program section ----------


int main(int argc, const char * argv[])

{


    @autoreleasepool {

        Fraction *myFraction;

        

        // new object

        myFraction = [Fraction alloc];

        myFraction = [myFraction init];

        

        // set

        [myFraction setNumerator: 1];

        [myFraction setDenominator: 3];

        

        // print all

        NSLog(@"Hello, World!");

        [myFraction print];

    }

    return 0;

}





    
[2] 耿老师讲 vi编辑器的应用
    来源: 互联网  发布时间: 2014-02-18
耿老师讲 vi编辑器的使用

vi编辑器的使用

1.VI(visual interface)文本编辑器
2.系统默认安装好的(精简)
3.启动vi:直接在命令行输入vi即可,在哪个目录下启动,默认保存在哪个目录下
4.vi启动后分为3种模式:
 插入模式:文字的编辑,内容的输入
 命令模式:执行相应的命令(如:查找,替换,复制,粘贴,剪切...)
 末行模式:特殊的命令模式(对文档进行保存,关闭..)
5.如何切换模式
 命令模式----插入模式(i或insert)
 插入模式----命令模式(ESC)
 命令模式----末行模式(:)
 末行模式----命令模式(ESC)
6.命令模式下:
 光标的移动:上下左右方向键或(k,j,h,l)
 行号的显示与隐藏:set nu/set nonu
 撤销:u
 文本的复制: yw(复制从光标开始向后的一个单词)
   nyw(复制从光标开始向后的N个单词)
   yy(复制从光标开始一行文本)
   nyy(复制从光标开始的n行文本)
 文本的粘贴:p
7.末行模式下:(在命令模式下输入:)
 文件的命名::f 文件名
 文件的保存:w
 文件的退出:q(q!表示不保存直接退出,wq保存退出)
 将N1到N2的内容复制到N3开始的行:N1,N2 co N3
 N1到N2的内容复制到N3开始的行:N1,N2 m N3
 光标的跳转:直接输入n,n表示行号。
 删除行:d 删除当前行
 删除多行:nd 删除n行
 删除一个区间:N1,N2 d
 文件的查找和替换:
  直接输入?|/后面输入要查找的字符串即可
  将查找的内容写入到另外的文件当中:?str/w file
  将查找的内容替换:N1,N2  s/str1/str2/g  str1查找的内容 st:r2替换的内容 /g表示替换当前行 n1,n2表示范围
 vi可以同时打开多个文件,文件之间的切换可以通过next和prev来实现 
 


    
[3] 座标地址互找
    来源: 互联网  发布时间: 2014-02-18
坐标地址互找
Geocoding API
  • 1.什么是Geocoding?
  • 2.Geocoding API有哪些功能?
  • 3.使用限制
  • 4.如何使用
  • 5.服务地址
  • 6.接口参数
  • 7.返回数据说明
  • 8.接口示例
  • 什么是Geocoding?

    Geocoding API是一个供程序员调用的、http形式的地图服务接口。主要服务那些非网页程序的调用。例如C# 、C++、Java等开发语言都能发送http请求且能接收返回数据。

    用户只需在请求的url字串中拼接好关键字或者经纬度信息,即可获取到相应的百度经纬度或者结构化地理信息。

    Geocoding API有哪些功能?

    Geocoding API包括地址解析和逆地址解析功能。

    • 地址解析是指,由详细到街道的结构化地址得到百度经纬度信息,且支持名胜古迹、标志性建筑名称直接解析返回百度经纬度。例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.31985,lat:39.959836”,“百度大厦”地址解析的结果是“lng:116.30815,lat:40.056885”
    • 逆地址解析是指,由百度经纬度信息得到结构化地址信息。例如:“lat:31.325152,lng:120.558957”逆地址解析的结果是“江苏省苏州市虎丘区塔园路318号”。

    注意:

    1.因为Geocoding和反Geocoding使用的门址数据以及算法都不是一样的,所以会出现不能一一对应的现象。

    2.解析过程中可能会出现一对坐标值对应多个地址门牌信息,本接口将返回距离坐标点最近的一个地址门牌信息。

    使用限制

    目前无任何使用限制。请申请key,然后使用该接口。

    如何使用

    第一步,申请key,点击这里获取密钥,申请key需要注册百度账号;

    第二步,拼写发送http请求的url,注意需使用第一步申请的key;

    第三步,接收http请求返回的数据(支持json和xml格式)。

    服务地址

    • 地址解析:根据地址获取坐标

      http://api.map.baidu.com/geocoder?address=地址&output=输出格式类型&key=用户密钥&city=城市名

    • 逆地址解析:根据坐标获取地址

      http://api.map.baidu.com/geocoder?location=纬度,经度&output=输出格式类型&key=用户密钥

    备注:

    1. city属于可选参数,通常情况可以不使用,若解析无结果,请尝试增加此字段。

    2. 支持名胜古迹、标志性建筑物名称解析返回百度经纬度坐标,如address=“百度大厦”。

    3. 支持使用“*路与*路交叉口”方式解析返回百度经纬度坐标,若地址库中存在该地址描述,返回百度经纬度坐标。

    4. 若解析status字段为OK,若结果内容为空,原因分析及可尝试方法:

    • 地址库里无此数据,本次结果为空。

    • 加入city字段重新解析;

    • 将过于详细或简单的地址更改至省市区县街道重新解析;

    5. 特别提醒:逆地址解析location参数传入的参数格式是(纬度lat,经度lng)。

    接口参数 参数 是否必须 默认值 格式举例 含义 output 否 json json或xml 输出格式为json或者xml address 是 无 北京市海淀区上地十街10号 根据指定地址进行坐标的反定向解析 location 是 无 38.76623,116.43213
    lat<纬度>,lng<经度> 根据指定坐标来进行地址的解析 city 否 “北京市” “广州市” 地址所在的城市名 key 是 无 8cb976834235d8cbcde2dce4835ae191 用户申请注册的key

    上表中address和location两个字段如果同时出现,则优先选择address执行地理编码功能。对于address字段可能会出现中文或其它一些特殊字符(如:空格),所以对于类似的字符都要进行编码处理,编码成 UTF-8 字符的二字符十六进制值,凡是不在下表中的字符都要进行编码。

    字符集合 字符 URL非保留字 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 - _ . ~ URL保留字 ! * ' ( ) ; : @ & = + $ , / ? % # [ ]

    附注:

    (1) javascript中一般采用encodeURIComponent函数对特殊字符进行编码。

    (2) Java中可以使用函数URLEncoder.encode对特殊字符进行编码。

    (3) C#中可以使用函数HttpUtility.UrlEncode对特殊字符进行编码。

    (4) php中可以使用函数urlencode对特殊字符进行编码。

    返回数据说明

    返回结果(地址解析的结果)

     {status: '字符串状态常量', 取值如下:
     //OK 成功
     INVILID_KEY 非法密钥 
     INVALID_PARAMETERS 非法参数,参数错误时候给出。
     result: {    
     location: {
     lat: 纬度:数值,
     lng: 经度:数值
     },
     precise:’位置的附加信息,是否精确查找’(1为精确查找,0为不精确查找),
     confidence: 可信度,
     level:'级别'
     },
     }

    返回结果(反地址解析的结果)

     {status: '字符串状态常量', 取值如下:
     //OK 成功
     INVILID_KEY 非法密钥   
     INVALID_PARAMETERS 非法参数,参数错误时候给出。
     result: {    
     location: {
     lat: 纬度:数值,
     lng: 经度:数值
     },
     formatted_address: ‘详细地址描述’,
     business: '周围商圈',
     addressComponent:{
     city:’城市名称’,
     district: ‘区县名称’,
     province:’省份名称’, 
     street: ‘街道名称’,
     streetNumber: '门牌号码' 
     },
     cityCode: '城市代码'
     }
     }
     

    接口示例

    根据详细地址获取坐标

     
                

    http://api.map.baidu.com/geocoder?address=%E4%B8%8A%E5%9C%B0%E5%8D%81%E8%A1%9710%E5%8F%B7&output=json&key=37492c0ee6f924cb5e934fa08c6b1676

    //根据“上地十街10号”返回坐标“lng:116.307175, lat:40.057098”,以json格式输出

    http://api.map.baidu.com/geocoder?address=%E4%B8%8A%E5%9C%B0%E5%8D%81%E8%A1%9710%E5%8F%B7&output=xml&key=37492c0ee6f924cb5e934fa08c6b1676

    //根据“上地十街十号”返回坐标“lng:116.307175, lat:40.057098”,以xml格式输出


    在指定城市内检索详细地址的坐标

     
                

    http://api.map.baidu.com/geocoder?address=%E4%B8%8A%E5%9C%B0%E5%8D%81%E8%A1%9710%E5%8F%B7&output=json&key=37492c0ee6f924cb5e934fa08c6b1676&city=%E5%8C%97%E4%BA%AC%E5%B8%82

    // 在北京市内根据“上地十街10号”返回坐标“lng:116.307175, lat:40.057098”,以json格式输出

    http://api.map.baidu.com/geocoder?address=%E4%B8%8A%E5%9C%B0%E5%8D%81%E8%A1%9710%E5%8F%B7&output=xml&key=37492c0ee6f924cb5e934fa08c6b1676&city=%E5%8C%97%E4%BA%AC%E5%B8%82

    // 在北京市内根据“上地十街10号”返回坐标“lng:116.307175, lat:40.057098”,以json格式输出


    根据特定建筑物获取它的坐标

     
                

    http://api.map.baidu.com/geocoder?address=%E7%99%BE%E5%BA%A6%E5%A4%A7%E5%8E%A6&output=json&key=37492c0ee6f924cb5e934fa08c6b1676  //根据“百度大厦”名称返回坐标“lng:116.307175, lat:40.057098”,以json格式输入

    http://api.map.baidu.com/geocoder?address=%E7%99%BE%E5%BA%A6%E5%A4%A7%E5%8E%A6&output=xml&key=37492c0ee6f924cb5e934fa08c6b1676  //根据“百度大厦”名称返回坐标“lng:116.307175, lat:40.057098”,以xml格式输入


    根据“*路与*路交叉路口”类型地址描述获得它的坐标

     
                

    http://api.map.baidu.com/geocoder?address=%E5%8C%97%E4%B8%80%E7%8E%AF%E8%B7%AF%E5%92%8C%E9%98%9C%E9%98%B3%E8%B7%AF%E7%9A%84%E4%BA%A4%E5%8F%89%E8%B7%AF%E5%8F%A3&output=json&key=37492c0ee6f924cb5e934fa08c6b1676

    //根据“北一环路和阜阳路的交叉路口”名称返回坐标“lng:117.294364, lat:31.885558”,以json格式输入

    http://api.map.baidu.com/geocoder?address=%E5%8C%97%E4%B8%80%E7%8E%AF%E8%B7%AF%E5%92%8C%E9%98%9C%E9%98%B3%E8%B7%AF%E7%9A%84%E4%BA%A4%E5%8F%89%E8%B7%AF%E5%8F%A3&output=xml&key=37492c0ee6f924cb5e934fa08c6b1676

    //根据“北一环路和阜阳路的交叉路口”名称返回坐标“lng:117.294364, lat:31.885558”,以xml格式输入


    根据坐标获取它的地址

     
                

    http://api.map.baidu.com/geocoder?output=json&location=39.983424,%20116.322987&key=37492c0ee6f924cb5e934fa08c6b1676

    //解析“lat:39.983424, lng:116.322987”坐标返回“北京市海淀区中关村大街27号1101-08室”,以json格式输出

    http://api.map.baidu.com/geocoder?output=xml&location=39.983424,%20116.322987&key=37492c0ee6f924cb5e934fa08c6b1676

    //解析“lat:39.983424, lng:116.322987”坐标返回“北京市海淀区中关村大街27号1101-08室


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android根据电话号码获得联系人头像实例代码 iis7站长之家
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3