自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (4)
  • 收藏
  • 关注

转载 FMDB

https://github.com/ccgus/fmdb

2018-08-11 16:38:12 133

转载 AFNetworking

https://github.com/AFNetworking/AFNetworking

2018-08-11 16:34:15 141

转载 iOS多线程:『RunLoop』详尽总结

https://www.jianshu.com/p/d260d18dd551

2018-06-24 16:39:57 207

转载 iOS多线程:『NSOperation、NSOperationQueue』详尽总结

https://www.jianshu.com/p/4b1d77054b35

2018-06-24 16:39:37 277

转载 iOS多线程:『GCD』详尽总结

https://www.jianshu.com/p/2d57c72016c6

2018-06-24 16:35:43 156

原创 NSNotification、delegate、kvo、block的对比

1、NSNotification(通知)描述: 有一个NSNotification Center的单例对象,允许事件发生时通知其它对象。通知中心完成观察者注册、发送通知、移除观察者操作。使用: NSNotification的使用包括注册通知、观察者注册、发送通知、移除观察者操作。注意: 1、同一个通知注册同一个观察者多次,而且调用的方法一样。那么这个方法会调用多次。 2、移...

2018-06-10 21:41:58 259

转载 ios中的load和initialize的区别

https://sunjinshuai.github.io/2016/08/16/iOS%E4%B9%8B-load%E5%92%8C-initialize%E7%9A%84%E5%8C%BA%E5%88%AB/

2018-06-08 13:58:14 525

原创 runtime(3) -

11111111111111111111

2018-06-06 17:10:53 144

原创 property(3) - 属性的底层探究

1

2018-05-11 15:15:21 239 1

原创 property(2) - 修饰属性的关键字

属性扩展属性的线程安全修饰实例变量,使其线程中是否安全,或者高效nonatomic 和 atomic (默认) 1 atomic用于多线程中,是原子性的(即它的方法有加锁和解锁的过程) 2 nonatomic用于单线程,非原子性,因为没有加锁和解锁的过程所以效率比atomic的高但是其安全隐患大属性的语义通过使用点方法给实例变量赋值,而实例变量所拥有的特性...

2018-05-09 15:17:47 230

原创 内存管理(6) - 内存泄漏工具及其使用

前言

2018-05-01 23:15:55 106

原创 内存管理(3) - Autorelease Pool(大部分摘抄自black)

前言NSAutoreleasePool(仅MRC有)NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];//作用范围从释放池创建到释放池release[pool release];@autoreleasepool(MRC、ARC都有)@autoreleasepool //比NSAutorelease...

2018-05-01 16:46:36 152

原创 内存管理(2) - property修饰符和object所有权

前言property修饰符和object所有权有一些关联。1、属性中的修饰符的内存管理实现assign(默认)(ARC、MRC都有)用于CGFloat、NSInteger、基本数据类型(c类型) 用于不保留变量的对象、即相当创建弱引用而避免循环引用的发生- (void)setter:(tupe *)xxxx //调用其setter方法时{ _...

2018-05-01 16:44:34 272

转载 iOS开发中如何设置textfield输入长度并且仅仅只能输入数字

https://blog.csdn.net/qq_18235033/article/details/52851117

2018-04-20 17:06:51 614

原创 block(6) - ARC、MRC及block之间的循环引用

2、易发生在block如://.h文件在ARCtypedef void(^block)(void);@interface Test : NSObject@property (nonatomic,copy)block testBlock;@property (nonatomic,assign)NSInteger temp;@property (nonatomic,copy)...

2018-03-12 15:56:30 371

原创 kvo(key value observer)

kvo 用来观察对象的属性是否发生变化1、建立一个Test类 2、添加观察者

2018-03-09 10:50:10 110

原创 runtime(2) - 方法欺骗

方法欺骗是指在运行时候动态的交换所调用的方法。1、原理 2、代码实现

2018-03-08 20:16:01 160

原创 runtime(1) - 消息发送机制

1、消息发送机制1、[ ]发送消息 2、将[ ]发送消息转换为cpp代码//在命令行输入此命令即可clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs...

2018-03-08 15:11:23 188

原创 extension(类扩展)和 category(类别)

extension(类扩展)1、进行一个类扩展

2018-02-28 17:26:31 6258

转载 self 和 super

https://www.jianshu.com/p/15fa5e84c897

2018-02-16 13:54:12 95

原创 内存管理(4) - 循环引用

当用指针指向某个对象时候,可以对其进行管理(通过retain和release)就拥有对这个对象的强引用或弱引用1、什么是循环引用?结论:当两个对象相互持有对方(即拥有对对方的强引用),此时各自的引用计数都为1,释放不了,而造成内存泄露。当多个对象能形成一个环时候情况类似。用weak或者__weak创建归零弱引用 因为c指向的地方被释放了,调用它可能会导致问题,...

2018-02-08 22:34:35 324

原创 block(5) - block需要特别注意的地方

1、ARC下也是有栈block的1、ARC下,栈block 2、ARC下,堆block 3、MRC下,栈block 疑问 1:对比2,3,同样的代码在ARC,MRC下的block的类型居然不同,为什么呢? - 在ARC下,block如果通过 = 进行传递时,会导致调用objc_retainBlock->Block_copy->_Block_copy_intern...

2018-02-08 19:52:00 280

原创 block(4) - 本地对象和block及__block修饰符

本地对象和block及__block修饰符1、看其底层实现 //__block声明而多出来的结构体 struct __Block_byref_b_0 { void *__isa; __Block_byref_b_0 *__forwarding; int __flags; int __size; void (*__Blo...

2018-02-08 17:57:03 238

原创 block(3) - 变量与__block修饰符

__block修饰变量的时候时候1、__block修饰本地变量转为cpp的样子 //用__block修饰的本地变量b多了这个结构体 struct __Block_byref_b_0 { //直译为本地变量b在block中是通过引用的 void *__isa; __Block_byref_b_0 *__forwar...

2018-02-08 16:53:23 446

原创 内存管理(5) - 关于retainCount在不同场合输出值不符合预期的分析

1、NSString、NSMutableString 和 NSArray、NSMutableArrayvoid x(void){ NSString *str = [[NSString alloc]init]; //定义初始一个对象 //NSArray *str = [[NSArray alloc]init]; //这句的下面的结果也是一样的 NSLog(@"st...

2018-02-08 15:52:30 179

原创 block(1) - block的底层

一、什么是代码块?代码块的底层实现是结构体1、block的内存实现 struct Block_layout { void *isa; //指向所属类的指针,即block的类型 int flags; //标志变量,操作block内部时会用到 in...

2018-02-08 15:50:32 411

原创 block(2) - 变量与block

block和variable1、本地变量与block的关系及其变化 int main(int argc, const char * argv[]) { @autoreleasepool { int a = 10; int b = 20; NSLog(@"&a:%p ,&b:%p ,a:%d ,...

2018-02-08 15:42:33 271

原创 strong和copy

以下对使用strong 和 copy的地方都适用.h @interface Test : NSArray @property (nonatomic,strong) NSArray * sArray; @property (nonatomic,copy) NSArray * cArray; - (void) pri; @end.m...

2018-01-25 20:01:30 161

原创 关于const 、NSxxxx(不可变)、NSMutablexxxx(可变) 的区别

NSxxxx 、NSMutablexxxx 、const之间的关系都差不多、这里用NSString 、NSMutableString来讲NSString的不可变 NSString *string = @"one"; //其实是string指针指向的地址的内容不可变(如@“one”的内容是不可变的) //问题1 :@“one”的内容为啥不可变? //

2018-01-25 14:53:14 227

原创 id相关

动态数据类型和静态数据类型动态数据类型只有在运行时候才知道其类型和属性静态数据类型在编译的时候就知道其类型和其属性,并在编译时可访问其属性1、消息发送机制id (动态数据类型)id是指针,id*是指针的指针id 有时很危险 NSString *s = @"ab"; id obj = s; //id为指向任何类型...

2018-01-22 20:01:20 162

原创 protocol(协议)和 delegate(委托)

protocol(协议)使用delegation委托的场景实现不同页面的数据交互、可以用在界面跳转、界面传值、跳转页面刷新数据、监听事件等。当delegate的事件触发时,delegate才会被调用。...

2018-01-18 21:21:54 221

原创 property(1) - 属性的基本知识

属性知识点属性@property预编译指令的作用是自动生成setter和getter方法@synthesize表示创建了该属性的访问代码(xcode4.5后不再用了)实例变量名和属性名一致,因为属性基于变量实例变量可以在头文件或者实现文件 , 区别是子类可以通过属性访问头文件中的,而实现文件中的为本类所有,子类不可见点表达式出现在左调用setter,出现在右调用gettercopy...

2018-01-18 14:53:38 520

原创 内存管理(1) - 引用计算的基本操作

内存管理内存管理其实就是对引用计数的管理,需要从MRC和ARC两方面探讨,其中MRC与ARC的主要区别是MRC下需要手动retain、release、autorelease等在ARC下会自动完成。1、引用计数相关操作 对象操作 OC中对应的方法 对应的 retainCount 变化 生成并持有对象 alloc/new/copy/mutableCop...

2018-01-17 21:45:45 224

qt继承图最详细

QShared |---QGLayoutIterator | |---QLayoutArrayIterator | |---QBoxLayoutIterator | |---QToolLayoutIterator | |---QMainWindowLayoutIterator |---QBrushData |---QDOM_ImplementationPrivate |---QDOM_NodePrivate | |---QDOM_DocumentTypePrivate | |---QDOM_DocumentFragmentPrivate | |---QDOM_CharacterDataPrivate | | |---QDOM_TextPrivate | | | |---QDOM_CDATASectionPrivate | | |---QDOM_CommentPrivate | |---QDOM_AttrPrivate | |---QDOM_ElementPrivate | |---QDOM_NotationPrivate | |---QDOM_EntityPrivate | |---QDOM_EntityReferencePrivate | |---QDOM_ProcessingInstructionPrivate | |---QDOM_DocumentPrivate |---QDOM_NodeListPrivate |---QDOM_NamedNodeMapPrivate |---QFontData |---array_data |---QGuardedPtrPrivate |---QImageData |---QMapPrivateBase | |---QMapPrivate |---QMemoryManagerFont |---QSMCacheItem |---QPalData |---QPenData |---QPixmapData |---QRegionData |---QTextCharFormat |---QTextCustomItem | |---QTextHorizontalLine | |---QTextLineBreak | |---QTextImage | |---QTextTable |---QSmartPtrPrivate |---QStringData |---QValueListPrivate |---QVariantPrivate |---QCursorData |---QIconSetPrivate |---WhatsThisItem QLayoutItem |---QSpacerItem |---QWidgetItem |---QLayout |---QTextTableCell QGArray |---QArray | |---QPointArray QGCacheIterator |---QAsciiCacheIterator |---QCacheIterator |---QIntCacheIterator QGDictIterator |---QAsciiDictIterator | |---QSignalDictIt |---QDictIterator |---QIntDictIterator | |---QWidgetIntDictIt |---QPtrDictIterator QAsyncIO |---QDataSink |---QDataSource | |---QIODeviceSource QTextDecoder |---QBig5Decoder |---QEucJpDecoder |---QEucKrDecoder |---QGbkDecoder |---QJisDecoder |---QSjisDecoder |---QTextStatelessDecoder |---QTextCodecFromIODDecoder |---QUtf8Decoder |---QUtf16Decoder QTextCodec |---QBig5Codec |---QEucJpCodec |---QEucKrCodec |---QGbkCodec |---QJisCodec |---QKoi8Codec |---QHebrewCodec | |---QArabicCodec |---QSjisCodec |---QWindowsLocalCodec |---QTextCodecFromIOD |---QSimpleTextCodec |---QLatin1Codec |---QTsciiCodec |---QUtf8Codec |---QUtf16Codec QByteArray |---QBitArray |---QCString Qt |---QBrush |---QCanvasItem | |---QCanvasSprite | |---QCanvasPolygonalItem | | |---QCanvasRectangle | | |---QCanvasPolygon | | |---QCanvasLine | | |---QCanvasEllipse | |---QCanvasText |---QEvent | |---QTimerEvent | |---QMouseEvent | |---QWheelEvent | |---QKeyEvent | |---QFocusEvent | |---QPaintEvent | |---QMoveEvent | |---QResizeEvent | |---QCloseEvent | |---QShowEvent | |---QHideEvent | |---QIMEvent | | |---QIMComposeEvent | |---QDragResponseEvent | |---QDragLeaveEvent | |---QChildEvent | |---QCustomEvent | |---QDropEvent | |---QDragMoveEvent | | |---QDragEnterEvent |---QGfx//抽象对屏幕具体操作接口 | |---QGfxRasterBase | | |---QGfxRaster | | | |---QGfxSNAP | | | |---QGfxVFb | | |---QDirectPainterGfx |---QIconViewItem |---QListViewItem | |---File | |---QCheckListItem | |---Root |---QCustomMenuItem | |---QTearOffMenuItem |---QObject | |---QLayout | | |---QGridLayout | | |---QToolLayout | | |---QMainWindowLayout | | |---QBoxLayout | | | |---QHBoxLayout | | | |---QVBoxLayout | |---QAccel | |---QAction | | |---QActionGroup | |---QApplication | |---QDataPump | |---QCanvas | |---QClipboard | |---QColorDialogPrivate | |---QCopChannel | |---QDns | | |---QDnsUgleHack | |---QDnsSocket | | |---QDnsManager | |---QDragObject | | |---QStoredDrag | |---QDragManager | |---QFileIconProvider | | |---QWindowsIconProvider | |---QGuardedPtrPrivate | |---QWSKeyboardHandler | | |---QWSyopyButtonsHandler | | |---QWSVr41xxButtonsHandler | | |---QWSVFbKeyboardHandler | | |---QWSPC101KeyboardHandler | | | |---QWSTtyKeyboardHandler | | | |---QWSUsbKeyboardHandler | |---QLibraryPrivate | |---QNetworkProtocol | | |---QFtp | | |---QLocalFs | |---QNetworkOperation | |---QNPInstance | |---QSenderObject | |---QServerSocket | | |---QVNCServer | | |---QWSServerSocket | | | |---QWSSoundServerSocket | | | |---QWSServer | |---QSessionManager | |---QSignalMapper | |---QSocket | | |---QWSSocket | | | |---QWSSoundClient | | | |---QWSSoundServerClient | |---QSocketNotifier | |---QSound | |---QAuServer | |---QWSSoundServer | |---QWSServer | | |---QAuServerQWS | |---QStyleSheet | |---QToolTipGroup | |---QTranslator | |---QUrlOperator | |---QWSInputMethod | |---QWSClient | |---QWSManager | |---QWSServerSignalBridge | |---QFrameEventHandler | |---QMovieFilePrivate | |---QWSSoundServerData | |---QThreadPostEventPrivate | |---QSingleShotTimer | |---QTipManager | |---QWhatsThisPrivate | |---QWSMouseHandler | | |---QAutoMouseHandler | | |---QWSMouseHandlerPrivate | | |---QYopyTPanelHandlerPrivate | | |---QCustomTPanelHandlerPrivate | | |---QVFbMouseHandlerPrivate | | |---QWSMouseHandlerPrivate | | |---QCalibratedMouseHandler | | | |---QVrTPanelHandlerPrivate | | | |---QTPanelHandlerPrivate | | | |---QTSLibHandlerPrivate | | | |---QPPTPanelHandlerPrivate | |---QValidator | | |---QDoubleValidator | | |---QIntValidator | | | |---QColIntValidator | |---QTimer | | |---QDnsQuery | |---QStyle | | |---QCommonStyle | | | |---QWindowsStyle | | | | |---QCompactStyle | | | | |---QPlatinumStyle | | | |---QMotifStyle | | | | |---QCDEStyle | | | | |---QInterlaceStyle | | | | |---QMotifPlusStyle | | | | |---QSGIStyle | |---QWidget | | |---QButton | | | |---QCheckBox | | | |---QPushButton | | | |---QRadioButton | | | |---QToolButton | | | | |---QWhatsThisButton | | |---QColorLuminancePicker | | |---QColorShower | | |---QComboBox | | |---QDial | | |---QDialog | | | |---QColorDialog | | | |---QFileDialog | | | |---QFontDialog | | | |---QInputDialog | | | |---QMessageBox | | | |---QPrintDialog | | | |---QTabDialog | | | |---QWizard | | |---QFDProgressAnimation | | |---QFrame | | | |---QColorPicker | | | |---QColorShowLabel | | | |---QWidgetStack | | | |---QGrid | | | |---QGroupBox | | | | |---QButtonGroup | | | | | |---QHButtonGroup | | | | | |---QVButtonGroup | | | | |---QHGroupBox | | | | |---QVGroupBox | | | |---QHBox | | | | |---QVBox | | | |---QLabel | | | | |---QWorkspaceChildTitleButton | | | | |---QTipLabel | | | |---QLCDNumber | | | |---QMenuBar | | | |---QSpinBox | | | |---QPopupMenu | | | | |---QComboBoxPopup | | | |---QProgressBar | | | |---QSplitter | | | |---QWorkspaceChildTitleLabel | | | |---QWorkspaceChild | | | |---QToolBarSeparator | | | |---QTableView | | | | |---QWellArray | | | | | |---QColorWell | | | | |---QMultiLineEdit | | | | | |---QIconViewItemLineEdit | | | |---QScrollView | | | |---QCanvasView | | | |---QIconView | | | |---QListBox | | | | |---QFileListBox | | | |---QListView | | | | |---QFileListView | | | |---QTable | | | |---QTextView | | | | |---QTextBrowser | | |---QGLWidget | | |---QHeader | | | |---QTableHeader | | |---QLineEdit | | | |---QColNumLineEdit | | | |---QRenameEdit | | |---QMainWindow | | |---QNPWidget | | |---QScrollBar | | |---QSemiModal | | | |---QFDProgressDialog | | | |---QProgressDialog | | |---QSizeGrip | | |---QSlider | | |---QStatusBar | | |---QTabBar | | |---QTabWidget | | |---QToolBar | | |---QWorkspaceChildTitleBar | | |---QWorkspace | | |---QETWidget | | |---QShapedPixmapWidget | | |---QAccessWidget | | |---QAlphaWidget | | |---QHideDock | | |---QClipperWidget | | |---QSplitterHandle | | |---QCornerSquare | | |---QTextDetailPopup | | |---QArrowWidget | | |---QFocusDataAccessor | | |---Invisible |---QPainter | |---QDirectPainter |---QPen |---QPixmap |---QStyleSheetItem |---QTableItem |---QMutex |---QThread |---QWaitCondition |---QSemaphore |---QToolTip | |---QIconViewToolTip | |---QHideToolTip |---QWhatsThis |---QWSSoundServer |---QWSCursor |---QDialogPrivate QIODevice |---QBuffer |---QFile |---QSocket |---QSocketDevice |---QStringBuffer QPolygonScanner |---QCanvasPolygonScanner |---QGfxRaster QValueList |---QCanvasItemList |---TrieList |---QStringList |---QValueStack QUnknownInterface |---QLibraryInterface QDataStream |---QCopEnvelope QRangeControl |---QDial |---QScrollBar |---QSlider |---QSpinBox QXmlDefaultHandler |---QDomHandler QDomNode |---QDomDocumentType |---QDomDocument |---QDomDocumentFragment |---QDomCharacterData | |---QDomText | | |---QDomCDATASection | |---QDomComment |---QDomAttr |---QDomElement |---QDomNotation |---QDomEntity |---QDomEntityReference |---QDomProcessingInstruction QMimeSource |---QDragObject | |---QStoredDrag | | |---QUriDrag | | |---QColorDrag | |---QTextDrag | |---QImageDrag | |---QIconDrag QEvent,QMimeSource(双继承) |---QDropEvent | |---QDragMoveEvent | | |---QDragEnterEvent QListBoxItem |---MCItem |---QListBoxText |---QListBoxPixmap QFontFactory |---QFontFactoryBDF |---QFontFactoryFT QDiskFontPrivate |---QDiskFontFT QRenderedFont |---QRenderedFontFT |---QRenderedFontBDF QCollection |---QGCache | |---QIntCache | |---QAsciiCache | |---QCache | | |---QFontCache | | |---QPMCache |---QGDict | |---QDict | |---QCDict | |---QPtrDict | |---QIntDict | | |---QWidgetIntDict | | | |---QWidgetMapper | |---QAsciiDict | |---QObjectDictionary | |---QSignalDict | |---QMemberDict |---QGList | |---QList | | |---UrlInfoList | | |---QGDItList | | |---QObjectList | | |---QConnectionList | | |---QSortedList | | |---QWidgetList | | |---QButtonList |---QGVector | |---QVector QBaseBucket |---QStringBucket |---QAsciiBucket |---QIntBucket |---QPtrBucket QScreen//显示设备基类,包含显示设备基本描述和操作方式 |---QLinuxFbScreen |---QSNAPScreen |---QVFbScreen QImageFormat |---QGIFFormat |---QMNGFormat |---QPNGFormat QImageFormatType |---QGIFFormatType |---QMNGFormatType |---QPNGFormatType QGL |---QGLFormat |---QGLContext |---QGLWidget QJpUnicodeConv |---QJpUnicodeConv_Unicode_JISX0201 |---QJpUnicodeConv_Unicode_ASCII |---QJpUnicodeConv_JISX0221_JISX0201 |---QJpUnicodeConv_JISX0221_ASCII |---QJpUnicodeConv_Sun |---QJpUnicodeConv_Microsoft QGListIterator |---QListIterator | |---QObjectListIt | |---QConnectionListIt | |---QCListIt | |---QWidgetListIt QMapNodeBase |---QMapNode QMenuData |---QMenuBar |---QPopupMenu QNetworkProtocolFactoryBase |---QNetworkProtocolFactory QPaintDevice |---QPicture |---QPixmap | |---QBitmap | |---QCanvasPixmap | |---QwsPixmap |---QPrinter |---QPSPrinter |---QWidget QPNGImageWriter |---QPNGImagePacker QTextParagraph |---QRichText QStrListBase |---QStrList | |---QStrIList QStrVec |---QStrVec | |---QStrIVec QTextEncoder |---QTextStatelessEncoder |---QUtf16Encoder QTextStream |---QTextIStream |---QTextOStream QMutexPrivate |---QRMutexPrivate QUrl |---QUrlOperator QWSCommand |---QWSIdentifyCommand |---QWSCreateCommand |---QWSRegionNameCommand |---QWSRegionCommand |---QWSRegionMoveCommand |---QWSRegionDestroyCommand |---QWSChangeAltitudeCommand |---QWSRequestFocusCommand |---QWSAddPropertyCommand |---QWSSetPropertyCommand |---QWSRemovePropertyCommand |---QWSGetPropertyCommand |---QWSSetSelectionOwnerCommand |---QWSConvertSelectionCommand |---QWSDefineCursorCommand |---QWSSelectCursorCommand |---QWSGrabMouseCommand |---QWSGrabKeyboardCommand |---QWSPlaySoundCommand |---QWSQCopRegisterChannelCommand |---QWSQCopSendCommand |---QWSSetIMInfoCommand |---QWSIMMouseCommand |---QWSResetIMCommand |---QWSSetIMFontCommand QWSDecoration |---QWSDefaultDecoration | |---QWSHydroDecoration | |---QWSKDE2Decoration | |---QWSKDEDecoration | |---QWSWindowsDecoration | |---QWSBeOSDecoration QAutoMouseSubHandler |---QAutoMouseSubHandler_intellimouse |---QAutoMouseSubHandler_serial | |---QAutoMouseSubHandler_mousesystems | |---QAutoMouseSubHandler_ms |---QAutoMouseSubHandler_intellimouse QXmlReader |---QXmlSimpleReader QEffects |---QAlphaWidget |---QRollEffect QString |---QCIString QFont |---QFont_Private QScreenCursor |---QVFbScreenCursor QImageConsumer |---QImageIOFrameGrabber QMultiLineEditCommand |---QBeginCommand |---QEndCommand |---QDelTextCmd | |---QInsTextCmd QPSPrinterFontPrivate |---QPSPrinterFontTTF |---QPSPrinterFontPFA |---QPSPrinterFontPFB |---QPSPrinterFontNotFound |---QPSPrinterFontAsian | |---QPSPrinterFontJapanese | |---QPSPrinterFontKorean | |---QPSPrinterFontTraditionalChinese | |---QPSPrinterFontSimplifiedChinese QWSSoundServerProvider |---QWSSoundServerBucket |---QWSSoundServerStream

2017-09-12

野火stm32开发pdf

《零死角玩转STM32》软件上分为基础入门篇和项目提高篇,对应的硬件为野火 STM32 ISO / ISO-MINI 这两个开发板,ISO-MINI 是ISO 的精简版,在视频和PDF 教程上 都可以兼容,像AT24C02,SPI FLASH 这些例程,因为用的IO 是一样的,那么这两个例 程可以在ISO 跟ISO-MINI 上完全兼容。至于其他的外设,只需要稍微修改下IO 即可,其 他全部不需要修改,甚至函数都是一模一样。

2017-09-12

跟我一起写Makefile-陈皓

什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

2017-09-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除