目前分類:硬體類 (36)

瀏覽方式: 標題列表 簡短摘要

BatteryChartView-screesnhot  

程式碼下載


shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

加速感應器 (Acceleration) 偵測的單位為 g力 (即重力),正常情況我們都會受地心引力所影響,即一個 g 力,用平常的直立方式觀看 iPhone ,則其會在 y 軸得到 1g 的重力,而傾斜後就會在不同方向得到分散的 g 力,而如果快速移動你的 iPhone 的話,加速感應器則可以偵測 g 力的瞬間變化,來得知 iPhone 的移動。



shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

UITouch有提供locationInView 這個method 可以達到這個功能

 

只要在程式裡面加入此method

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

[[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone
調用方法:NSString * str = [UIDevice currentDevice].model;


shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON ) 


shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

-(BOOL)silenced

{

     #if TARGET_IPHONE_SIMULATOR

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

(NSString *) platformString{

    // Gets a string with the device model

    size_t size;  

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

對於iphone開發人員來說,記憶體管理是極為重要的技巧,哪怕程式的功能再強大,設計再漂亮,如果記憶體控制不好,也難逃程式莫名退出的噩運,這與網頁開發是完全不同的。

記憶體控制裡面有很多門道,在這裡分析一下 viewDidUnload 和 dealloc 的區別,關於這兩者的區別的文章很多,但是大都是摘抄和翻譯官方文檔,有的也只是簡單的說兩句,並沒有詳細說出兩者具體的區別。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

IPhone下每個app可用的記憶體是被限制的,如果一個app使用的記憶體超過20M,則系統會向該app發送Memory Warning消息。收到此消息後,app必須正確處理,否則可能出錯或者出現記憶體洩露。

app收到Memory Warning後會調用:

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

在內存管理的Objective-C代碼裏,一個Cocoa對象存在於一個生命周期,有明確的階段。它被創建,初始化,並使用(也就是,其它對象發送消息給它)。它還可能會被保留,拷貝,或壓縮,並最終被釋放和銷毀。下面的討論以圖表形式對一個典型對象的生命周期進行了描述,這裏還沒有涉及更多的細節。

讓我們從後面開始,當垃圾收集被關掉時對象銷毀的方式。在此背景下Cocoa和Objective-C 選擇一個自動的,策略驅動的過程來保持對象的存在並在不再被需要的時候銷毀它們。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

文章來源: http://www.mobpub.net/viewthread.php?tid=4994&amp;extra=page%3D1

 
從包裝盒上可以看出,這是一款一款黑色3G iPhone手機

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

  1. import flash.events.TouchEvent;
  2. import flash.events.MouseEvent;
  3. import flash.ui.Multitouch;
  4. import flash.ui.MultitouchInputMode;
  5. import flash.display.Sprite;
  6. Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
  7. var text1:String;
  8. var text2:String;
  9. var text3:String;
  10. var touchtotal:int = 0;
  11. var touchMoveID:int = 0;
  12. var touchgrouplength:int;
  13. var touchgroup:Array = new Array();
  14. var ballgroup:Array = new Array();
  15. var myline1:Sprite = new Sprite();
  16. var tempballnum:int;
  17. var tempflagx:Boolean;
  18. var tempflagy:Boolean;
  19. var tempflag:Boolean;
  20. var color:uint = rgb();
  21. if (Multitouch.supportedGestures)
  22. {
  23.      text1 = "● SupportsGesture, Support " + Multitouch.maxTouchPoints.toString() + " MaxTouchPoint  ";
  24. }
  25. else
  26. {
  27.      text1 = "● No supports Gesture  ";
  28. }
  29. if (Multitouch.supportsGestureEvents)
  30. {
  31.      text2 = "SupportsGestureEvents  ";
  32. }
  33. else
  34. {
  35.      text2 = "No supports GestureEvents  ";
  36. }
  37. if (Multitouch.supportsTouchEvents)
  38. {
  39.      text3 = "SupportsTouchEvents";
  40. }
  41. else
  42. {
  43.      text3 = "No supports TouchEvents";
  44. }
  45. mytext1.text = text1 + text2 + text3;
  46. startbutton.addEventListener(TouchEvent.TOUCH_TAP, taphandler);
  47. function taphandler(evt:TouchEvent):void
  48. {
  49.      removeChild(startbutton);
  50.      removeChild(group1);
  51.      removeChild(group2);
  52.      stage.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
  53.      stage.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
  54.      stage.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);
  55. }
  56. function onTouchBegin(eBegin:TouchEvent)
  57. {
  58.      touchtotal = touchtotal + 1;
  59.      mytext2.text = "● You have touched " + touchtotal + "points";
  60.      touchMoveID = eBegin.touchPointID;
  61.      tempflagy = (eBegin.stageY > touchbox.y) && (eBegin.stageY < (touchbox.y + touchbox.height));
  62.      tempflagx = (eBegin.stageX > touchbox.x) && (eBegin.stageX < (touchbox.x + touchbox.width));
  63.      tempflag = tempflagy && tempflagx;
  64.      if (tempflag)
  65.      {
  66.          var ball1:Sprite = new ball();
  67.          ball1.x = eBegin.stageX - 35;
  68.          ball1.y = eBegin.stageY - 35;
  69.         ball1.name = "ball" + touchMoveID.toString();
  70.          ballgroup.push(ball1);
  71.          addChild(ball1);
  72.          touchgroup.push(touchMoveID);
  73.          switch (ballgroup.length)
  74.          {
  75.              case 0 :
  76.                  break;
  77.              case 1 :
  78.                  break;
  79.              case 2 :
  80.                  var myline1:Sprite = new Sprite();
  81.                  myline1.name = "line" + (ballgroup.length-1);
  82.                  myline1.graphics.clear();
  83.                  myline1.graphics.lineStyle(4, color, 1);
  84.                  myline1.graphics.moveTo(ballgroup[0].x + ballgroup[0].width/2, ballgroup[0].y + ballgroup[0].height/2);
  85.                  myline1.graphics.lineTo(ballgroup[1].x + ballgroup[1].width/2, ballgroup[1].y + ballgroup[1].height/2);
  86.                  addChild(myline1);
  87.                  break;
  88.              default :
  89.                  var myline2:Sprite = new Sprite();
  90.                  myline2.name = "line" + (ballgroup.length-1);
  91.                  myline2.graphics.clear();
  92.                  myline2.graphics.lineStyle(4,color, 1);
  93.                  myline2.graphics.moveTo(ballgroup[ballgroup.length-2].x + ballgroup[ballgroup.length-2].width/2, ballgroup[ballgroup.length-2].y + ballgroup[ballgroup.length-2].height/2);
  94.                  myline2.graphics.lineTo(ballgroup[ballgroup.length-1].x + ballgroup[ballgroup.length-1].width/2, ballgroup[ballgroup.length-1].y + ballgroup[ballgroup.length-1].height/2);
  95.                  addChild(myline2);
  96.                  var myline3:Sprite = new Sprite();
  97.                  myline3.name = "line" + (ballgroup.length);
  98.                  myline3.graphics.clear();
  99.                  myline3.graphics.lineStyle(4,color, 1);
  100.                  myline3.graphics.moveTo(ballgroup[0].x + ballgroup[0].width/2, ballgroup[0].y + ballgroup[0].height/2);
  101.                  myline3.graphics.lineTo(ballgroup[ballgroup.length-1].x + ballgroup[ballgroup.length-1].width/2, ballgroup[ballgroup.length-1].y + ballgroup[ballgroup.length-1].height/2);
  102.                  addChild(myline3);
  103.                  if (ballgroup.length > 3)
  104.                  {
  105.                      removeChild(getChildByName("line" + (ballgroup.length-1)));
  106.                  }
  107.          }
  108.      }
  109. }
  110. function onTouchMove(eMove:TouchEvent)
  111. {
  112.      getChildByName("ball" + eMove.touchPointID).x = eMove.stageX - 35;
  113.      getChildByName("ball" + eMove.touchPointID).y = eMove.stageY - 35;
  114.      switch (ballgroup.length)
  115.      {//删除已有的线
  116.          case 0 :
  117.              break;
  118.          case 1 :
  119.              break;
  120.          case 2 :
  121.              removeChild(getChildByName("line1"));
  122.              break;
  123.          default :
  124.              for (var m:int =1; m<=ballgroup.length; m++)
  125.              {
  126.                  removeChild(getChildByName("line" + m.toString()));
  127.              }
  128.      }
  129.      switch (ballgroup.length)
  130.      {//重新画一遍所有的线
  131.          case 0 :
  132.              break;
  133.          case 1 :
  134.              break;
  135.          case 2 :
  136.              var myline1:Sprite = new Sprite();
  137.              myline1.name = "line1";
  138.              myline1.graphics.clear();
  139.              myline1.graphics.lineStyle(4, color, 1);
  140.              myline1.graphics.moveTo(ballgroup[0].x + ballgroup[0].width/2, ballgroup[0].y + ballgroup[0].height/2);
  141.              myline1.graphics.lineTo(ballgroup[1].x + ballgroup[1].width/2, ballgroup[1].y + ballgroup[1].height/2);
  142.              addChild(myline1);
  143.              break;
  144.          default :
  145.              for (var n:int =1; n<ballgroup.length; n++)
  146.              {
  147.                  var myline2:Sprite = new Sprite();
  148.                  myline2.name = "line" + n.toString();
  149.                  myline2.graphics.clear();
  150.                  myline2.graphics.lineStyle(4,color, 1);
  151.                  myline2.graphics.moveTo(ballgroup[n-1].x + ballgroup[n-1].width/2, ballgroup[n-1].y + ballgroup[n-1].height/2);
  152.                  myline2.graphics.lineTo(ballgroup[n].x + ballgroup[n].width/2, ballgroup[n].y + ballgroup[n].height/2);
  153.                  addChild(myline2);
  154.              }
  155.              var myline3:Sprite = new Sprite();
  156.              myline3.name = "line" + (ballgroup.length);
  157.              myline3.graphics.clear();
  158.              myline3.graphics.lineStyle(4,color, 1);
  159.              myline3.graphics.moveTo(ballgroup[0].x + ballgroup[0].width/2, ballgroup[0].y + ballgroup[0].height/2);
  160.              myline3.graphics.lineTo(ballgroup[ballgroup.length-1].x + ballgroup[ballgroup.length-1].width/2, ballgroup[ballgroup.length-1].y + ballgroup[ballgroup.length-1].height/2);
  161.              addChild(myline3);
  162.      }
  163.      //eEnd.target.stopTouchDrag(eEnd.touchPointID);
  164.      //eEnd.target.removeChildAt(1);
  165. }
  166. function onTouchEnd(eEnd:TouchEvent)
  167. {
  168.      touchtotal = touchtotal - 1;
  169.      mytext2.text = "● You have touched " + touchtotal + "points";
  170.      removeChild(getChildByName("ball" + eEnd.touchPointID));
  171.      switch (ballgroup.length)
  172.      {
  173.          case 0 :
  174.              break;
  175.          case 1 :
  176.              break;
  177.          case 2 :
  178.              removeChild(getChildByName("line1"));
  179.              break;
  180.          default :
  181.              for (var m:int =1; m<=ballgroup.length; m++)
  182.              {
  183.                  removeChild(getChildByName("line" + m.toString()));
  184.              }
  185.      }
  186.      touchgrouplength = touchgroup.length;
  187.      for (var j:int=0; j<touchgrouplength; j++)
  188.      {
  189.          if (touchgroup[j] == eEnd.touchPointID)
  190.          {
  191.              touchgroup.splice(j, 1);
  192.              ballgroup.splice(j, 1);
  193.              break;
  194.          }
  195.      }
  196.      switch (ballgroup.length)
  197.      {//重新画一遍所有的线
  198.          case 0 :
  199.              break;
  200.          case 1 :
  201.              color = rgb();
  202.              break;
  203.          case 2 :
  204.              var myline1:Sprite = new Sprite();
  205.              myline1.name = "line1";
  206.              myline1.graphics.clear();
  207.              myline1.graphics.lineStyle(4, color, 1);
  208.              myline1.graphics.moveTo(ballgroup[0].x + ballgroup[0].width/2, ballgroup[0].y + ballgroup[0].height/2);
  209.              myline1.graphics.lineTo(ballgroup[1].x + ballgroup[1].width/2, ballgroup[1].y + ballgroup[1].height/2);
  210.              addChild(myline1);
  211.              break;
  212.          default :
  213.              for (var n:int =1; n<ballgroup.length; n++)
  214.              {
  215.                  var myline2:Sprite = new Sprite();
  216.                  myline2.name = "line" + n.toString();
  217.                  myline2.graphics.clear();
  218.                  myline2.graphics.lineStyle(4,color, 1);
  219.                  myline2.graphics.moveTo(ballgroup[n-1].x + ballgroup[n-1].width/2, ballgroup[n-1].y + ballgroup[n-1].height/2);
  220.                  myline2.graphics.lineTo(ballgroup[n].x + ballgroup[n].width/2, ballgroup[n].y + ballgroup[n].height/2);
  221.                  addChild(myline2);
  222.              }
  223.              var myline3:Sprite = new Sprite();
  224.              myline3.name = "line" + (ballgroup.length);
  225.              myline3.graphics.clear();
  226.              myline3.graphics.lineStyle(4, color, 1);
  227.              myline3.graphics.moveTo(ballgroup[0].x + ballgroup[0].width/2, ballgroup[0].y + ballgroup[0].height/2);
  228.              myline3.graphics.lineTo(ballgroup[ballgroup.length-1].x + ballgroup[ballgroup.length-1].width/2, ballgroup[ballgroup.length-1].y + ballgroup[ballgroup.length-1].height/2);
  229.              addChild(myline3);
  230.      }
  231.      //stage.removeEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
  232.      //stage.removeEventListener(TouchEvent.TOUCH_END, onTouchEnd);
  233. }
  234. function rgb():uint
  235. {
  236.      return (Math.random() * 0xffffff + 0xff000000);
  237. }
  238. color1.addEventListener(TouchEvent.TOUCH_TAP, colorfunc1);
  239. function colorfunc1(evt:TouchEvent):void
  240. {
  241.      var colorbox:colorbox1 = new colorbox1();
  242.      addChild(colorbox);
  243.      colorbox.addEventListener(TouchEvent.TOUCH_TAP, colorboxremovefunc);
  244. }
  245. function colorboxremovefunc(evt:TouchEvent):void
  246. {
  247.      evt.target.removeEventListener(TouchEvent.TOUCH_TAP, colorboxremovefunc);
  248.      removeChild(getChildByName(evt.target.name));
  249. }
  250. color2.addEventListener(TouchEvent.TOUCH_TAP, colorfunc2);
  251. function colorfunc2(evt:TouchEvent):void
  252. {
  253.      var colorbox:colorbox2 = new colorbox2();
  254.      addChild(colorbox);
  255.      colorbox.addEventListener(TouchEvent.TOUCH_TAP, colorboxremovefunc);
  256. }
  257. color3.addEventListener(TouchEvent.TOUCH_TAP, colorfunc3);
  258. function colorfunc3(evt:TouchEvent):void
  259. {
  260.      var colorbox:colorbox3 = new colorbox3();
  261.      addChild(colorbox);
  262.      colorbox.addEventListener(TouchEvent.TOUCH_TAP, colorboxremovefunc);
  263. }
  264. color4.addEventListener(TouchEvent.TOUCH_TAP, colorfunc4);
  265. function colorfunc4(evt:TouchEvent):void
  266. {
  267.      var colorbox:colorbox4 = new colorbox4();
  268.      addChild(colorbox);
  269.      colorbox.addEventListener(TouchEvent.TOUCH_TAP, colorboxremovefunc);
  270. }
  271. color5.addEventListener(TouchEvent.TOUCH_TAP, colorfunc5);
  272. function colorfunc5(evt:TouchEvent):void
  273. {
  274.      var colorbox:colorbox5 = new colorbox5();
  275.      addChild(colorbox);
  276.      colorbox.addEventListener(TouchEvent.TOUCH_TAP, colorboxremovefunc);
  277. }
  278. color6.addEventListener(TouchEvent.TOUCH_TAP, colorfunc6);
  279. function colorfunc6(evt:TouchEvent):void
  280. {
  281.      var colorbox:colorbox6 = new colorbox6();
  282.      addChild(colorbox);
  283.      colorbox.addEventListener(TouchEvent.TOUCH_TAP, colorboxremovefunc);
  284. }
  285. color7.addEventListener(TouchEvent.TOUCH_TAP, colorfunc7);
  286. function colorfunc7(evt:TouchEvent):void
  287. {
  288.      var colorbox:colorbox7 = new colorbox7();
  289.      addChild(colorbox);
  290.      colorbox.addEventListener(TouchEvent.TOUCH_TAP, colorboxremovefunc);
  291. }

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

extern NSString *CTSettingCopyMyPhoneNumber();


shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

 
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

升級到4.1固件後就可以查看信號強度了,經過測試支援iPhone 4和iPhone 3GS(理論上也適用于iPhone 3G)。使用方法很簡單:
  1. 首先,升級iPhone 4—或其它iPhone—到iOS 4.1。
  2. 在撥號介面輸入*3001#12345#* ? 最後按撥號鍵

 


shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

内存管理相关方法

cocoa类中的根类NSObject有几个方法(类方法)是对内存进行管理的。
1)alloc方法:为对象分配一块内存空间;当alloc一个对象空间时,retain count加1。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

iOS Devices, 如iPhone, iPad, iPod Touch, 內置對Mobile Devices Management 移動設備管理的支援,讓商用客戶有能力在整個組織內大規模部署iOS Devices. 這 些Mobile Devices Management 移動設備管理能力是內建在如Configuration Profiles配置描述檔、Over-the-Air Enrollment無線徵召、以及Apple Push Notification蘋果通知推送這樣的iOS技術之上,能夠集成進協力廠商的伺服器級解決方案之內。這讓IT部門有能力在企業環境內,安全地 enroll徵召 iOS Devices、通過無線方式進行設定、更新設置參數、監控企業環境內應用的iOS Devices是否符合公司策略,甚至是可以遠端抹除或鎖定那些受管理的那些iOS Devices。

 

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

General Information

UIDevice *myCurrentDevice = [UIDevice currentDevice];

NSLog(@"%@ is an %@ running %@",[myCurrentDevice name],

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

FROM:Technical Note TN2244Launching your Application in Landscape

Introduction

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

#include <IOKit/IOKitLib.h>
#include <CoreFoundation/CoreFoundation.h>
 

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

1 2