苹果5sh5l苹果越狱是什么意思思

来自苹果的编程语言——Swift简介
这篇文章简要介绍了苹果于WWDC 2014发布的编程语言Swift。 原文作者: Lucida Blog 新浪微博 豆瓣 前言 在这里我认为有必要提一下Brec Victor的Inventing on Principle,Swift编程环境的大部分概念都源自于
本文转自 (、)
这篇文章简要介绍了苹果于发布的编程语言&&Swift。
在这里我认为有必要提一下的,Swift编程环境的大部分概念都源自于Brec这个演讲。
接下来进入正题。
Swift是什么?
Swift是苹果于WWDC 2014发布的编程语言,这里引用的原话:
&Swift is a new programming language for iOS and OS X apps that builds on the best of C and Objective-C, without the constraints of C compatibility.
Swift adopts safe programming patterns and adds modern features to make programming easier, more flexible and more fun.
Swift&s clean slate, backed by the mature and much-loved Cocoa and Cocoa Touch frameworks, is an opportunity to imagine how software development works.
Swift is the first industrial-quality systems programming language that is as expressive and enjoyable as a scripting language.
简单的说:
Swift用来写iOS和OS X程序。(估计也不会支持其它屌丝系统)
Swift吸取了C和Objective-C的优点,且更加强大易用。
Swift可以使用现有的Cocoa和Cocoa Touch框架。
Swift兼具编译语言的高性能(Performance)和脚本语言的交互性(Interactive)。
Swift语言概览
注:这一节的代码源自中的A Swift Tour。
Hello, world
类似于脚本语言,下面的代码即是一个完整的Swift程序。
println(&Hello,&world&)&
变量与常量
Swift使用var声明变量,let声明常量。
var&myVariable&=&42&myVariable&=&50&let&myConstant&=&42&
Swift支持类型推导(Type Inference),所以上面的代码不需指定类型,如果需要指定类型:
let&explicitDouble&:&Double&=&70&
Swift不支持隐式类型转换(Implicitly casting),所以下面的代码需要显式类型转换(Explicitly casting):
let&label&=&&The&width&is&&&let&width&=&94&let&widthLabel&=&label&+&String(width)&
字符串格式化
Swift使用\(item)的形式进行字符串格式化:
let&apples&=&3&let&oranges&=&5&let&appleSummary&=&&I&have&\(apples)&apples.&&let&appleSummary&=&&I&have&\(apples&+&oranges)&pieces&of&fruit.&&
数组和字典
Swift使用[]操作符声明数组(array)和字典(dictionary):
var&shoppingList&=&[&catfish&,&&water&,&&tulips&,&&blue&paint&]&shoppingList[1]&=&&bottle&of&water&&&&var&occupations&=&[&&&&&&Malcolm&:&&Captain&,&&&&&&Kaylee&:&&Mechanic&,&]&occupations[&Jayne&]&=&&Public&Relations&&
一般使用初始化器(initializer)语法创建空数组和空字典:
let&emptyArray&=&String[]()&let&emptyDictionary&=&Dictionary&String,&Float&()&
如果类型信息已知,则可以使用[]声明空数组,使用[:]声明空字典。
Swift的条件语句包含if和switch,循环语句包含for-in、for、while和do-while,循环/判断条件不需要括号,但循环/判断体(body)必需括号:
let&individualScores&=&[75,&43,&103,&87,&12]&var&teamScore&=&0&for&score&in&individualScores&{&&&&&if&score&&&50&{&&&&&&&&&teamScore&+=&3&&&&&}&else&{&&&&&&&&&teamScore&+=&1&&&&&}&}&
结合if和let,可以方便的处理可空变量(nullable variable)。对于空值,需要在类型声明后添加?显式标明该类型可空。
var&optionalString:&String?&=&&Hello&&optionalString&==&nil&&&var&optionalName:&String?&=&&John&Appleseed&&var&gretting&=&&Hello!&&if&let&name&=&optionalName&{&&&&&gretting&=&&Hello,&\(name)&&}&
灵活的switch
Swift中的switch支持各种各样的比较操作:
let&vegetable&=&&red&pepper&&switch&vegetable&{&case&&celery&:&&&&&let&vegetableComment&=&&Add&some&raisins&and&make&ants&on&a&log.&&case&&cucumber&,&&watercress&:&&&&&let&vegetableComment&=&&That&would&make&a&good&tea&sandwich.&&case&let&x&where&x.hasSuffix(&pepper&):&&&&&let&vegetableComment&=&&Is&it&a&spicy&\(x)?&&default:&&&&&let&vegetableComment&=&&Everything&tastes&good&in&soup.&&}&
for-in除了遍历数组也可以用来遍历字典:
let&interestingNumbers&=&[&&&&&&Prime&:&[2,&3,&5,&7,&11,&13],&&&&&&Fibonacci&:&[1,&1,&2,&3,&5,&8],&&&&&&Square&:&[1,&4,&9,&16,&25],&]&var&largest&=&0&for&(kind,&numbers)&in&interestingNumbers&{&&&&&for&number&in&numbers&{&&&&&&&&&if&number&&&largest&{&&&&&&&&&&&&&largest&=&number&&&&&&&&&}&&&&&}&}&largest&
while循环和do-while循环:
var&n&=&2&while&n&&&100&{&&&&&n&=&n&*&2&}&n&&&var&m&=&2&do&{&&&&&m&=&m&*&2&}&while&m&&&100&m&
Swift支持传统的for循环,此外也可以通过结合..(生成一个区间)和for-in实现同样的逻辑。
var&firstForLoop&=&0&for&i&in&0..3&{&&&&&firstForLoop&+=&i&}&firstForLoop&&&var&secondForLoop&=&0&for&var&i&=&0;&i&&&3;&++i&{&&&&&secondForLoop&+=&1&}&secondForLoop&
注意:Swift除了..还有...:..生成前闭后开的区间,而...生成前闭后闭的区间。
函数和闭包
Swift使用func关键字声明函数:
func&greet(name:&String,&day:&String)&-&&String&{&&&&&return&&Hello&\(name),&today&is&\(day).&&}&greet(&Bob&,&&Tuesday&)&
通过元组(Tuple)返回多个值:
func&getGasPrices()&-&&(Double,&Double,&Double)&{&&&&&return&(3.59,&3.69,&3.79)&}&getGasPrices()&
支持带有变长参数的函数:
func&sumOf(numbers:&Int...)&-&&Int&{&&&&&var&sum&=&0&&&&&for&number&in&numbers&{&&&&&&&&&sum&+=&number&&&&&}&&&&&return&sum&}&sumOf()&sumOf(42,&597,&12)&
函数也可以嵌套函数:
func&returnFifteen()&-&&Int&{&&&&&var&y&=&10&&&&&func&add()&{&&&&&&&&&y&+=&5&&&&&}&&&&&add()&&&&&return&y&}&returnFifteen()&
作为头等对象,函数既可以作为返回值,也可以作为参数传递:
func&makeIncrementer()&-&&(Int&-&&Int)&{&&&&&func&addOne(number:&Int)&-&&Int&{&&&&&&&&&return&1&+&number&&&&&}&&&&&return&addOne&}&var&increment&=&makeIncrementer()&increment(7)&
func&hasAnyMatches(list:&Int[],&condition:&Int&-&&Bool)&-&&Bool&{&&&&&for&item&in&list&{&&&&&&&&&if&condition(item)&{&&&&&&&&&&&&&return&true&&&&&&&&&}&&&&&}&&&&&return&false&}&func&lessThanTen(number:&Int)&-&&Bool&{&&&&&return&number&&&10&}&var&numbers&=&[20,&19,&7,&12]&hasAnyMatches(numbers,&lessThanTen)&
本质来说,函数是特殊的闭包,Swift中可以利用{}声明匿名闭包:
numbers.map({&&&&&(number:&Int)&-&&Int&in&&&&&let&result&=&3&*&number&&&&&return&result&&&&&})&
当闭包的类型已知时,可以使用下面的简化写法:
numbers.map({&number&in&3&*&number&})&
此外还可以通过参数的位置来使用参数,当函数最后一个参数是闭包时,可以使用下面的语法:
sort([1,&5,&3,&12,&2])&{&$0&&&$1&}&
创建和使用类
Swift使用class创建一个类,类可以包含字段和方法:
class&Shape&{&&&&&var&numberOfSides&=&0&&&&&func&simpleDescription()&-&&String&{&&&&&&&&&return&&A&shape&with&\(numberOfSides)&sides.&&&&&&}&}&
创建Shape类的实例,并调用其字段和方法。
var&shape&=&Shape()&shape.numberOfSides&=&7&var&shapeDescription&=&shape.simpleDescription()&
通过init构建对象,既可以使用self显式引用成员字段(name),也可以隐式引用(numberOfSides)。
class&NamedShape&{&&&&&var&numberOfSides:&Int&=&0&&&&&var&name:&String&&&&&&&init(name:&String)&{&&&&&&&&&self.name&=&name&&&&&}&&&&&&&func&simpleDescription()&-&&String&{&&&&&&&&&return&&A&shape&with&\(numberOfSides)&sides.&&&&&&}&}&
使用deinit进行清理工作。
继承和多态
Swift支持继承和多态(override父类方法):
class&Square:&NamedShape&{&&&&&var&sideLength:&Double&&&&&&&init(sideLength:&Double,&name:&String)&{&&&&&&&&&self.sideLength&=&sideLength&&&&&&&&&super.init(name:&name)&&&&&&&&&numberOfSides&=&4&&&&&}&&&&&&&func&area()&-&&Double&{&&&&&&&&&return&sideLength&*&sideLength&&&&&}&&&&&&&override&func&simpleDescription()&-&&String&{&&&&&&&&&return&&A&square&with&sides&of&length&\(sideLength).&&&&&&}&}&let&test&=&Square(sideLength:&5.2,&name:&&my&test&square&)&test.area()&test.simpleDescription()&
注意:如果这里的simpleDescription方法没有被标识为override,则会引发编译错误。
为了简化代码,Swift引入了属性(property),见下面的perimeter字段:
class&EquilateralTriangle:&NamedShape&{&&&&&var&sideLength:&Double&=&0.0&&&&&&init(sideLength:&Double,&name:&String)&{&&&&&&&&&self.sideLength&=&sideLength&&&&&&&&&super.init(name:&name)&&&&&&&&&numberOfSides&=&3&&&&&}&&&&&&var&perimeter:&Double&{&&&&&get&{&&&&&&&&&return&3.0&*&sideLength&&&&&}&&&&&set&{&&&&&&&&&sideLength&=&newValue&/&3.0&&&&&}&&&&&}&&&&&&override&func&simpleDescription()&-&&String&{&&&&&&&&&return&&An&equilateral&triagle&with&sides&of&length&\(sideLength).&&&&&&}&}&var&triangle&=&EquilateralTriangle(sideLength:&3.1,&name:&&a&triangle&)&triangle.perimeter&triangle.perimeter&=&9.9&triangle.sideLength&
注意:赋值器(setter)中,接收的值被自动命名为newValue。
willSet和didSet
EquilateralTriangle的构造器进行了如下操作:
1.为子类型的属性赋值。
2.调用父类型的构造器。
3.修改父类型的属性。
如果不需要计算属性的值,但需要在赋值前后进行一些操作的话,使用willSet和didSet:
class&TriangleAndSquare&{&&&&&var&triangle:&EquilateralTriangle&{&&&&&willSet&{&&&&&&&&&square.sideLength&=&newValue.sideLength&&&&&}&&&&&}&&&&&var&square:&Square&{&&&&&willSet&{&&&&&&&&&triangle.sideLength&=&newValue.sideLength&&&&&}&&&&&}&&&&&init(size:&Double,&name:&String)&{&&&&&&&&&square&=&Square(sideLength:&size,&name:&name)&&&&&&&&&triangle&=&EquilateralTriangle(sideLength:&size,&name:&name)&&&&&}&}&var&triangleAndSquare&=&TriangleAndSquare(size:&10,&name:&&another&test&shape&)&triangleAndSquare.square.sideLength&triangleAndSquare.square&=&Square(sideLength:&50,&name:&&larger&square&)&triangleAndSquare.triangle.sideLength&
从而保证triangle和square拥有相等的sideLength。
Swift中,函数的参数名称只能在函数内部使用,但方法的参数名称除了在内部使用外还可以在外部使用(第一个参数除外),例如:
class&Counter&{&&&&&var&count:&Int&=&0&&&&&func&incrementBy(amount:&Int,&numberOfTimes&times:&Int)&{&&&&&&&&&count&+=&amount&*&times&&&&&}&}&var&counter&=&Counter()&counter.incrementBy(2,&numberOfTimes:&7)&
注意Swift支持为方法参数取别名:在上面的代码里,numberOfTimes面向外部,times面向内部。
?的另一种用途
使用可空值时,?可以出现在方法、属性或下标前面。如果?前的值为nil,那么?后面的表达式会被忽略,而原表达式直接返回nil,例如:
1&2&3&let&optionalSquare:&Square?&=&Square(sideLength:&2.5,&name:&&optional&&square&)&let&sideLength&=&optionalSquare?.sideLength&
当optionalSquare为nil时,sideLength属性调用会被忽略。
枚举和结构
使用enum创建枚举&&注意Swift的枚举可以关联方法:
enum&Rank:&Int&{&&&&&case&Ace&=&1&&&&&case&Two,&Three,&Four,&Five,&Six,&Seven,&Eight,&Nine,&Ten&&&&&case&Jack,&Queen,&King&&&&&&&&&func&simpleDescription()&-&&String&{&&&&&&&&&switch&self&{&&&&&&&&&&&&&case&.Ace:&&&&&&&&&&&&&&&&&return&&ace&&&&&&&&&&&&&&case&.Jack:&&&&&&&&&&&&&&&&&return&&jack&&&&&&&&&&&&&&case&.Queen:&&&&&&&&&&&&&&&&&return&&queen&&&&&&&&&&&&&&case&.King:&&&&&&&&&&&&&&&&&return&&king&&&&&&&&&&&&&&default:&&&&&&&&&&&&&&&&&return&String(self.toRaw())&&&&&&&&&}&&&&&}&}&let&ace&=&Rank.Ace&let&aceRawValue&=&ace.toRaw()&
使用toRaw和fromRaw在原始(raw)数值和枚举值之间进行转换:
if&let&convertedRank&=&Rank.fromRaw(3)&{&&&&&let&threeDescription&=&convertedRank.simpleDescription()&}&
注意:枚举中的成员值(member value)是实际的值(actual value),和原始值(raw value)没有必然关联。
一些情况下枚举不存在有意义的原始值,这时可以直接忽略原始值:
enum&Suit&{&&&&&case&Spades,&Hearts,&Diamonds,&Clubs&&&&&&&&&func&simpleDescription()&-&&String&{&&&&&&&&&switch&self&{&&&&&&&&&&&&&case&.Spades:&&&&&&&&&&&&&&&&&return&&spades&&&&&&&&&&&&&&case&.Hearts:&&&&&&&&&&&&&&&&&return&&hearts&&&&&&&&&&&&&&case&.Diamonds:&&&&&&&&&&&&&&&&&return&&diamonds&&&&&&&&&&&&&&case&.Clubs:&&&&&&&&&&&&&&&&&return&&clubs&&&&&&&&&&}&&&&&}&}&let&hearts&=&Suit.Hearts&let&heartsDescription&=&hearts.simpleDescription()&
除了可以关联方法,枚举还支持在其成员上关联值,同一枚举的不同成员可以有不同的关联的值:
enum&ServerResponse&{&&&&&case&Result(String,&String)&&&&&case&Error(String)&}&&&let&success&=&ServerResponse.Result(&6:00&am&,&&8:09&pm&)&let&failure&=&ServerResponse.Error(&Out&of&cheese.&)&&&switch&success&{&&&&&case&let&.Result(sunrise,&sunset):&&&&&&&&&let&serverResponse&=&&Sunrise&is&at&\(sunrise)&and&sunset&is&at&\(sunset).&&&&&&case&let&.Error(error):&&&&&&&&&let&serverResponse&=&&Failure...&\(error)&&}&
Swift使用struct关键字创建结构。结构支持构造器和方法这些类的特性。结构和类的最大区别在于:结构的实例按值传递(passed by value),而类的实例按引用传递(passed by reference)。
struct&Card&{&&&&&var&rank:&Rank&&&&&var&suit:&Suit&&&&&func&simpleDescription()&-&&String&{&&&&&&&&&return&&The&\(rank.simpleDescription())&of&\(suit.simpleDescription())&&&&&&}&}&let&threeOfSpades&=&Card(rank:&.Three,&suit:&.Spades)&let&threeOfSpadesDescription&=&threeOfSpades.simpleDescription()&
协议(protocol)和扩展(extension)
Swift使用protocol定义协议:
protocol&ExampleProtocol&{&&&&&var&simpleDescription:&String&{&get&}&&&&&mutating&func&adjust()&}&
类型、枚举和结构都可以实现(adopt)协议:
class&SimpleClass:&ExampleProtocol&{&&&&&var&simpleDescription:&String&=&&A&very&simple&class.&&&&&&var&anotherProperty:&Int&=&69105&&&&&func&adjust()&{&&&&&&&&&simpleDescription&+=&&&Now&100%&adjusted.&&&&&&}&}&var&a&=&SimpleClass()&a.adjust()&let&aDescription&=&a.simpleDescription&&&struct&SimpleStructure:&ExampleProtocol&{&&&&&var&simpleDescription:&String&=&&A&simple&structure&&&&&&mutating&func&adjust()&{&&&&&&&&&simpleDescription&+=&&&(adjusted)&&&&&&}&}&var&b&=&SimpleStructure()&b.adjust()&let&bDescription&=&b.simpleDescription&
扩展用于在已有的类型上增加新的功能(比如新的方法或属性),Swift使用extension声明扩展:
extension&Int:&ExampleProtocol&{&&&&&var&simpleDescription:&String&{&&&&&&&&&return&&The&number&\(self)&&&&&&}&&&&&mutating&func&adjust()&{&&&&&&&&&self&+=&42&&&&&}&}&7.simpleDescription&
泛型(generics)
Swift使用&&来声明泛型函数或泛型类型:
func&repeat&ItemType&(item:&ItemType,&times:&Int)&-&&ItemType[]&{&&&&&var&result&=&ItemType[]()&&&&&for&i&in&0..times&{&&&&&&&&&result&+=&item&&&&&}&&&&&return&result&}&repeat(&knock&,&4)&
Swift也支持在类、枚举和结构中使用泛型:
&enum&OptionalValue&T&&{&&&&&case&None&&&&&case&Some(T)&}&var&possibleInteger:&OptionalValue&Int&&=&.None&possibleInteger&=&.Some(100)&
有时需要对泛型做一些需求(requirements),比如需求某个泛型类型实现某个接口或继承自某个特定类型、两个泛型类型属于同一个类型等等,Swift通过where描述这些需求:
func&anyCommonElements&&T,&U&where&T:&Sequence,&U:&Sequence,&T.GeneratorType.Element:&Equatable,&T.GeneratorType.Element&==&U.GeneratorType.Element&&(lhs:&T,&rhs:&U)&-&&Bool&{&&&&&for&lhsItem&in&lhs&{&&&&&&&&&for&rhsItem&in&rhs&{&&&&&&&&&&&&&if&lhsItem&==&rhsItem&{&&&&&&&&&&&&&&&&&return&true&&&&&&&&&&&&&}&&&&&&&&&}&&&&&}&&&&&return&false&}&anyCommonElements([1,&2,&3],&[3])&
Swift语言概览就到这里,有兴趣的朋友请进一步阅读The Swift Programming Language。
接下来聊聊个人对Swift的一些感受。
注意:下面的感受纯属个人意见,仅供参考。
尽管我接触Swift不足两小时,但很容易看出Swift吸收了大量其它编程语言中的元素,这些元素包括但不限于:
1.属性(Property)、可空值(Nullable type)语法和泛型(Generic Type)语法源自C#。
2.格式风格与Go相仿(没有句末的分号,判断条件不需要括号)。
3.Python风格的当前实例引用语法(使用self)和列表字典声明语法。
4.Haskell风格的区间声明语法(比如1..3,1...3)。
5.协议和扩展源自Objective-C(自家产品随便用)。
6.枚举类型很像Java(可以拥有成员或方法)。
7.class和struct的概念和C#极其相似。
注意这里不是说Swift是抄袭&&实际上编程语言能玩的花样基本就这些,况且Swift选的都是在我看来相当不错的特性。
而且,这个大杂烩有一个好处&&就是任何其它编程语言的开发者都不会觉得Swift很陌生&&这一点很重要。
拒绝隐式(Refuse implicity)
Swift去除了一些隐式操作,比如隐式类型转换和隐式方法重载这两个坑,干的漂亮。
Swift的应用方向
我认为Swift主要有下面这两个应用方向:
我指的是编程教育。现有编程语言最大的问题就是交互性奇差,从而导致学习曲线陡峭。相信Swift及其交互性极强的编程环境能够打破这个局面,让更多的人&&尤其是青少年,学会编程。
这里有必要再次提到Brec Victor的Inventing on Principle,看了这个视频你就会明白一个交互性强的编程环境能够带来什么。
现有的iOS和OS X应用开发均使用Objective-C,而Objective-C是一门及其繁琐(verbose)且学习曲线比较陡峭的语言,如果Swift能够提供一个同现有Obj-C框架的简易互操作接口,我相信会有大量的程序员转投Swift;与此同时,Swift简易的语法也会带来相当数量的其它平台开发者。
总之,上一次某家大公司大张旗鼓的推出一门编程语言及其编程平台还是在2000年(微软推出C#),将近15年之后,苹果推出Swift&&作为开发者,我很高兴能够见证一门编程语言的诞生。
CocoaChina是全球最大的苹果开发中文社区,官方微信每日定时推送各种精彩的研发教程资源和工具,介绍app推广营销经验,最新企业招聘和外包信息,以及Cocos2d引擎、Cocos Studio开发工具包的最新动态及培训信息。关注微信可以第一时间了解最新产品和服务动态,微信在手,天下我有!
请搜索微信号“CocoaChina”关注我们!
关注微信 每日推荐
扫一扫 浏览移动版当前位置: >
越狱后推荐苹果公司简介
LOGO由来    第一代Logo关于Logo广为流传的一种说法是:电脑公司以那个咬了一口的苹果作为其商标图案,就是为纪念这位伟大的人工智能领域的先驱者&&艾兰&图灵实际上是误传。其来源为2001年的英国电影Enigma,在该部电影中虚构了前述有关图灵自杀与苹果公司LOGO关系的情节,被部分公众以及媒体讹传。  最初的LOGO在1976年由创始人三人之一韦恩设计,只在生产Apple-I时使用,为牛顿坐在苹果树下看书的钢笔绘画。在1976年由乔布斯决定重新委托广告设计,并配合Apple-2的发行使用,本次LOGO确定使用了彩虹色、具有一个缺口的苹果图像。  这个LOGO一直使用至1998年,在iMac发布时作出修改,变更为单色系列。2007年再次变更为金属带有阴影的银灰色,使用至今。公司早期  1971年,16岁的史蒂夫&乔布斯和21岁的史蒂夫&沃兹尼亚克(两个斯蒂夫)经朋友介绍而结识。1976年,乔布斯成功说服沃兹装配机器之余更拿去推销,他们另一位朋友,罗&韦恩(Ron Wayne)也加入,三人在日组成了苹果电脑公司。近年发展  iok G4在1989年推出销量欠理想的手提电脑Macintosh Portable后,一台更受欢迎的手提电脑Powerok在90年代初推出市面。这是首次与Sony联合设计,并为现今流行的手提电脑设立了现代的外形标准。在1994年,苹果更新了它的Macintosh产品线,推出了Power Mac系列。它基于、和苹果三家共同开发的PowerPC系列处理器。这款处理器使用RISC(精简指令集运算)结构,它超过了之前Mac所使用的Motorola 680x0系列,而且有本质的不同。苹果的系统软件经过调整,能让大部分为旧处理器编写的程序在PowerPC系列上以模拟模式运行。  除了电脑产品,苹果也制造消费者设备。在1990年代,苹果发表了Newton,创造了Personal Digital Assistance 一词,为最早的PDA。2000年代初推出的iPod数码音乐播放器大获成功,配合其独家的iTunes网络付费音乐下载系统,一举击败公司的Walkman系列成为全球占有率第一的便携式音乐播放器,随后推出的数个iPod系列产品更加巩固了苹果在商业数字音乐市场不可动摇的地位。  2006年,苹果创造了个人电脑iMac,苹果公司因此而获得了该公司创业已来最大幅度的市场股市。因这些产品设计完美所以受到人们的喜爱。  日,苹果电脑公司发布声明,Google公司首席运行官埃里克施密特已加入苹果公司董事会。  日,苹果电脑公司正式推出iPhone手机,并宣布更名为苹果公司。截至2009年9月,iPhone销量高达3430万部。  日,苹果公司在MacWorld2008展会上发布MacBook Air笔记本电脑,它曾一度是市面上最薄的笔记本电脑。现已被Voodoo Envy超过。  日,苹果公司推出经过全新设计的MacBook、MacBook Pro系列笔记本电脑和新产品Apple LED Cinema Display显示器。  日,苹果公司推出平板电脑产品iPad,定位介于iPhone和MacBook之间,采用iPhone OS操作系统的修改版,售价499美元起。  日,苹果公司推出平板电脑产品iPad 2,乔布斯不负众望出席。  日,苹果全球开发者大会(WWDC),推出Mac Os X lion、 5、,是乔布斯最后一次的发表/记者会。  日,首席执行官提姆.库克,发表新一代iphone:iPhone 4S  日,苹果公司创办人、董事长兼前首席执行官乔布斯病逝,苹果官方网站首页,亦由彩色变成黑白色,并换上乔布斯的黑白照片,哀悼乔布斯。而世界各地的苹果公司支持者亦纷纷在苹果旗舰店献花。
最热IT公司词条排行
热门IT公司专区排行苹果也解不开ID锁 苹果id锁是什么意思
苹果也解不开ID锁?id锁究竟是什么意思?本文来给大家详细介绍苹果id锁的含义,并且据说目前位置,该苹果id锁只有iPhone4可实现破解
二手手机回收商贩
3、从网上或者贩子手中收购的二手iPhone,已经绑定了Apple ID。
Apple ID登录界面
归根结底,激活锁的核心关键还是在于Apple ID和密码,两样全都忘记的话,使用iPhone就会存在种种隐患。除了影响激活、锁定手机、无法关闭&查找我的iPhone&外,常见的麻烦还有不能使 用App Store、iCloud、FaceTime等功能。另外,在iOS 7越狱时也需要先关闭&查找我的iPhone&,也就是说,没有了Apple ID和密码,越狱都成了一种奢望。
苹果也解不开?
如果在Apple ID和密码忘记的情况下遭遇激活锁,确实有点让人抓狂。此时,大多数人脑海中闪过的第一个念头就是:&解开它。&既然手机是苹果生产的,那么它肯定能解开 这个锁。为此,小宇也致电了苹果客户服务中心(电话:400-666-7-2273),但是结果却有些出人意料。
苹果发送的邮件
小宇向客服人员介绍了手机被锁的状态:&机器为iPhone 5,正处于激活画面,但提示需要输入Apple ID和密码,而这两个东西都已经忘记。&客服人员要求提供手机的相关信息,包括手机型号、IMEI、机主姓名。确认之后,又提供了一个邮箱,里面有一封用 于找回Apple ID的邮件,客服人员表示这是用户自己可操作的唯一方法。
找回Apple ID操作
简单看了一下这个网页,实际上就是Apple ID的登录页面,右侧下方有一个&找回您的Apple ID&的选项。点击进入后,需要填写姓名及4个邮箱地址,可见找回Apple ID正是利用了当初注册时的两个关键信息,确定究竟用哪个邮箱注册,这样用排除法筛选之后,就可以根据ID和邮箱修改密码。看起来这个方法比较合理,但一 般人在这之前就会将熟悉的账号试一遍,能走到这一步基本是前面提到的那几种粗心、懒惰的用户。
找回Apple ID操作
在这招行不通的情况下,小宇询问能不能拿着手机、购机发票和身份证去西单、王府井等苹果旗舰店进行处理,客服人员给出的答案很肯定,专卖店和售 后都不能找回ID及密码。之后,客服人员给出了一个最终解决方案,那就是提供手机购买凭证(专卖店开具的小票或发票)、包装盒SN码标贴、身份证、保修 卡、三包证明等资料的复印件,交给苹果相关验证团队进行验证,且购买凭证必须是苹果认证或者苹果官方开具的,后补票以及一些经销商的票据都不能作为验证资 料,在确认无误后会提供解锁ID和密码。
找回Apple ID操作
找回Apple ID操作
对此,小宇追问了该验证团队是否在国内、怎样提供资料、需要多长时间解锁等问题,客服人员只回答了三个&不清楚&。之后又咨询了关于从国外、香港购买手机的解锁问题,客服人员的回答则是&无法提供解锁服务。&
iPhone 5s相关凭证
简单分析了一下,所谓提供资料给验证团队,应该就是向苹果的相关数据部门提交验证。而国内专卖店及售后无法解锁也在情理之中,毕竟苹果一直都注 重用户的资料安全,它的相关数据库不可能轻易的让专卖店及售后人员接触到,这种涉及ID和密码的问题,肯定会慎之又慎。也就是说,寻求苹果解锁也是件几乎 行不通的事儿,至少在没有那些凭证的情况下是不行的。
唯有iPhone 4可实现硬解
对于苹果专卖店都解决不了的问题,维修人员又有什么办法呢?阿良表示,激活锁对于现在的维修行业来说也是个难题,通过软件、刷机等软解的方法肯 定搞不定,唯一可行的就是硬解。时下能够实现硬解激活锁的也只有iPhone 4,原理很简单,激活锁的锁定依据就是机器本身的IMEI和SN码,如果能将这两个码替换掉的话自然就能解开。而IMEI、SN码是存储在基带芯片和基带 字库上的,只要更换这两个芯片,然后写入另外一组码就可以,下面我们来看一下具体的维修流程:
1、拆机,将iPhone 4的主板取出。(网上有很多iPhone 4的拆机教程可参考)
2、需要替换的就是基带芯片和基带字库,首先用风枪将屏蔽罩取下,然后再拆卸芯片。(操作方法可参考《极客修:砖机之殇 字库损坏该如何维修?》)
3、将用于替换的基带芯片和基带字库装回主板。(操作方法可参考《极客修:砖机之殇 字库损坏该如何维修?》)
4、把可用的IMEI和SN码写入新装的基带芯片和基带字库中,这时需要用到专业的写号器和软件。}

我要回帖

更多关于 苹果vpn是什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信