原创 (二)shiro認證

認證是用戶來證明他們的身份。 subject認證主體,它包含有兩個重要信息: principals:身份,可以是用戶名,郵件,手機號碼等等,用來表示一個登陸主體身份 Creadentials:憑證,常見有密碼,數字證書等。 shiro處

原创 ios 去掉導航欄返回按鈕文字

@interface UIViewController (Navigation) @end #import "UIViewController+Navigation.h" @implementation UIViewContro

原创 ios CATransaction事務動畫,鍵盤彈出和消失視圖變化

ios的動畫的技術方案很多,UIview、CoreAnimation, (1)在UIview的分類中的的類方法中有+animationWithDuration:及其它類似的方法,可以實現一些比較基礎的動畫可以對UIview的屬性使用,如f

原创 iOS單例模式對象的創建及銷燬

  #import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN @interface User : NSObject /** 單例方法 @return 返回單例對象

原创 使用fork()編寫socket

服務端 // // Tcp_server.cpp // Cpp // // Created by JH on 2020/4/5. // Copyright © 2020 JH. All rights reserved. //

原创 vue微信公衆號授權頁面獲取openid、跨域

微信公衆號開發需要獲取用戶的openid,根據微信公衆號的官方文檔說明,需要做以下幾個準備工作 1.開發者需要先到公衆平臺官網中的“開發 - 接口權限 - 網頁服務 - 網頁帳號 - 網頁授權獲取用戶基本信息”配置選項中,修改授權回調域名

原创 ios 老項目接入flutter

在已有ios項目中添加flutter模塊,在網上找了許多文章,跟着文章一步步操作沒有成功。後來在官方英文文檔中找到答案。官方文檔官方文檔 添加flutter庫 第一步 在與ios項目同級的文件下,創建一個flutter model。 f

原创 ios 導航欄(二)——自定義導航欄

目前主要的幾種導航欄框架分爲三種: 使用UINavigationController作爲viewController的容器,即每次push的時候將viewController作爲一個新的UINavigationController的根視圖

原创 KVO原理及監聽數組數量發生變化

kvo作用 KVO俗稱鍵值監聽,它提供一種機制,當指定的對象的屬性被修改後,則對象就會接收到通知。就是每次指定的被觀察的對象的屬性被修改後,KVO就會自動通知想要的觀察者。 使用步驟: 步驟一  給對象添加監聽者 首先創建一個person

原创 UINavigationBar的結構

ios中導航欄是開發中常用到的,之前從沒有關注過導航欄裏面的具體結構。今天抽空具體瞭解了一下 UINavigationBar的父view是一個叫做UILayoutContainerView的視圖,該視圖對應的控制器就UINavigatio

原创 ios組件化開發(一)創建組件化

ios組件化開發,類似於自己寫一個第三方庫一樣,然後被主工程調用。 組件化開發,需要一個索引庫,因爲每個組件都有一個xxx.podspec 文件,因此需要一個庫去專門存放索引。這類似於一本新華字典有專門的目錄,通過目錄可以快速找到對應的組

原创 ios APP啓動原理與自定義UIApplication

iOS APP啓動原理 在oc項目中,入口文件是main.m文件,App啓動時首先會初始化所有的類,然後再調用main.m中的main函數。 啓動過程: 從類的初始化到main函數的執行 執行AppDelegate中的- (BOOL)ap

原创 swif4基礎學習(4)- 閉包、枚舉

import UIKit var str = "Hello, playground" //1.1閉包,與oc中的block類似 //方法聲明: (參數) -> 返回值 {函數體} //閉包聲明:{(參數) -> 返回值 in 函數體

原创 UICollectionView簡單瀑布流實現

1.如何實現瀑布流? 繼承基類UICollectionViewLayout,並實現方法,並在UICollectionView中使用這個佈局。 2.如何實現UICollectionViewLayout子類的方法 實現下面四個方法 //1.

原创 swif4基礎學習(6)- 繼承、協議等

import UIKit var str = "Hello, playground" //1下標 subscript struct TestTable{ subscript(index:Int)-> String